SQL. i have two tables residents (primary key rid) and dependents (primary key did). dependents is connected to residents through rid. I want to insert rows into dependents table only if the rid in the insert statement matches with any of the rid in the residents table. i tried the code below, but there is some error with the where clause.
insert into
dependents(rid, name, did, phone)
values
(1, 'george', 156, 8134563255)
where
exists(
select
rid
from
residents
where
residents.rid = dependents.rid
);
Advertisement
Answer
To my mind, it doesn’t make sense to insert a value that already exists, so I think that you might want actually want update:
update dependents
set name = 'george',
did = 156,
phone = 8134563255
where rid = 1;
If you want insert, then use insert . . . select:
insert into dependents (rid, name, did, phone)
select 1, 'george', 156, 8134563255
from residents r
where r.id = 1;
If you want to insert all residents, then:
insert into dependents (rid, name, did, phone)
select r.id, 'george', 156, 8134563255
from residents r;