Skip to content
Advertisement

inserting into table with conditions

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;
User contributions licensed under: CC BY-SA
6 People found this is helpful
Advertisement