SQL удалить из таблицы, где значение true в другой таблице - PullRequest
0 голосов
/ 28 января 2011

Мне нужно написать sql с приведенными ниже требованиями ..

  1. У меня есть таблица A с колонкой AA.
  2. У меня есть еще одна таблица B с колонкой BB.
  3. Столбец A в таблице AA будет иметь только два значения.
    либо 0, либо 100, а столбец столбца BB в таблице B имеет только одно значение: либо 1, либо 2, либо 3 .... или 7, и это значение представляет номер дня в неделе и поэтому будет меняться ежедневно в порядке или в понедельник (значение = 0). по воскресенье (значение = 7). Пожалуйста, игнорируйте содержимое в комментариях ./* BB в таблице b имеет значения от 1 до 7. * /
    Между таблицами A и B нет общего столбца

Теперь мне нужно удалить таблицу A, где AA = 100 ... но это должно происходить только при столбце BB = 7.

Может кто-нибудь помочь мне написать SQL для вышеперечисленного.

Ответы [ 2 ]

2 голосов
/ 28 января 2011

Оператор ниже удалит все строки из a, где aa равно 100, только если в b существует одна или несколько строк, где bb равно 7.

delete from a where aa = 100 and exists (select * from b where bb = 7);  
0 голосов
/ 28 января 2011

См. Отметьте это, если хотите так.

create table A (AA int)
create table B (BB int)

insert into A values (100)
insert into B values (1)

--Invalid Case
if exists (select 1 from B where BB = 7)
begin
    delete from A where aa = 100
    if @@rowcount > 0
    begin
        print 'BB in B has value euqal to 7'
    end
end
else
    begin
        print 'BB in B not equals to 7'
    end

--Valid Case
update B set BB = 7
if exists (select 1 from B where BB = 7)
begin
    delete from A where aa = 100
    if @@rowcount > 0
    begin
        print 'BB in B has value euqal to 7'
    end
end
else
    begin
        print 'BB in B not equals to 7 and Data Deleted from A'
    end
...