问题描述
我正在使用MysqL:
btableA具有tableB_id列
tableB具有some_interestring_column_on_TableB
我想要(下面的伪sql):
delete from tableA
where the associated row in tableB (via tableB_id) has
some_interestring_column_on_TableB = \'interestingValue\'
请帮助我将伪sql转换为真实sql。
解决方法
MySQL支持DELETE语句中的JOIN,以及在单个语句中从多个表中删除。以下内容只会从TABLEA中删除:
DELETE ta
FROM TABLEA ta
JOIN TABLEB tb ON b.id = a.tableb_id
AND b.col = \'some value\'
如果要从两个表中删除,请使用:
DELETE ta,tb
FROM TABLEA ta
JOIN TABLEB tb ON b.id = a.tableb_id
AND b.col = \'some value\'
就是说,这种支持在其他数据库中很少见-在大多数情况下,您必须使用ѭ3或EXISTS
。
, 尝试这个:
DELETE TableA
WHERE tableB_id IN (
SELECT id FROM TableB
WHERE interestring_column=\'pizza\');
, 我不知道mysql语法,但是我在想类似的东西(来自mssql):
delete from tableA
where tableA.tableB_id in
(select tableB.id from tableB
where tableB.some_interesting_column_on_TableB = \'interestingValue\')