2015-01-12 5 views
0

У меня есть две таблицы:Как удалить записи из некоторых таблиц sql за один раз?

  • ruleTBL: ruleid имя хоста
  • policyruleTBL: ruleid policyid

В ruleTBL, имя хоста является уникальным и один хост может иметь более одного ruleid. Я хочу удалить все записи в двух таблицах с одним именем хоста. Как мне написать заявление?

Например, если эти записи в ruleTBL

(ruleid = 1, hostname = 'news') 
(ruleid = 2, hostname = 'news') 

и policyruleTBL:

(ruleid = 1, policyid = 4) 
(ruleid = 2, policyid = 5) 

Я хочу, чтобы удалить все записи с помощью одного оператора. Большое вам спасибо!

+1

печати таблицу выборки данных. Ваше объяснение непонятно. –

+0

уверен, что имя хоста уникально, а не ruleid? –

ответ

0

Вы можете использовать многоуровневые таблицы ВЕЬЕТЕ

DELETE ruleTBL, policyruleTBL 
FROM ruleTBL 
JOIN policyruleTBL ON ruleTBL.ruleid = policyruleTBL.ruleid 
WHERE ruleTBL.ruleid=1;  
0
delete ruleTBL, policyruleTBL from ruleTBL inner join policyruleTBL where ruleTBL.ruleid=policyruleTBL.ruleid and ruleTBL.hostname="name"; 

Checkout это thread это может привести вас к вашей цели

0

Ваш вопрос довольно трудно понять.

Во всяком случае, я думаю, вы спрашиваете, как удалить из нескольких таблиц с JOIN:

DELETE t1.*, t2.* 
FROM t1 
JOIN t2 ON t1.rule_id = t2.rule_id 
WHERE <some condition> 

Это удалит все записи в обеих таблицах, которые были бы возвращены, если вы заменили DELETE с SELECT ...

Смежные вопросы