这可能很容易,但是周一早上.我有两张桌子:
表格1:
Field | Type | Null | Key | Default | Extra
id | int(32) unsigned | NO | PRI | NULL | auto_increment
group | int(32) | NO | | 0 |
Run Code Online (Sandbox Code Playgroud)
表2:
Field | Type | Null | Key | Default | Extra
group | int(32) | NO | | 0 |
Run Code Online (Sandbox Code Playgroud)
忽略其他字段...我想要一个SQL DELETE语句,它将删除Table1中存在等于Table1.group的Table2.group的所有行.因此,如果Table1的一行具有group = 69,那么当且仅当Table2中存在group = 69的行时才应该删除该行.
感谢您的任何帮助.
Jay*_*Jay 39
我想这就是你想要的:
DELETE FROM `table1`
WHERE `group` in (SELECT DISTINCT `group` FROM `table2`)
Run Code Online (Sandbox Code Playgroud)
小智 19
我觉得这种方式更快:
DELETE FROM t1 USING table1 t1 INNER JOIN table2 t2 ON ( t1.group = t2.group );
Run Code Online (Sandbox Code Playgroud)
小智 8
好的解决方案就是编写SQL,就像你自己说的那样:
DELETE FROM Table1
WHERE
EXISTS(SELECT 1 FROM Table2 WHERE Table2.Group = Table1.Group)
Run Code Online (Sandbox Code Playgroud)
此致,Arno Brinkman
像这样的东西
delete from table1 where group in (select group from table2)
Run Code Online (Sandbox Code Playgroud)