如何在删除另一个表中的行之前检查现有行?

时间:2015-09-27 16:21:29

标签: php mysql sql-delete

我有两张桌子:

// table1                              // table2
+----+------+---------+                +----+------+
| id | col1 | user_id |                | id | col2 |
+----+------+---------+                +----+------+
| 1  | a    | 100001  |                | 1  | a    |
| 2  | b    | 100002  |                | 2  | b    |
| 3  | c    | 100003  |                | 3  | c    |
+----+------+---------+                | 4  | a    |
                                       | 5  | a    |
                                       | 6  | c    |
                                       +----+------+

我还有一个名为$user_id的变量。现在我要删除table2 col2='a'所在的所有行,但我需要在table1.user_id = $user_id中检查$user_id = '100001'(在这种情况下为table1),然后才能删除

如何使用以下概念编写正确的语法查询:

IF table1.user_id = $user_id where table1.col1 = 'a' then
   delete from table2 where col2 = 'a'

我可以使用PHP和MySQL使用两个独立的查询来做到这一点。但是我想用一个查询做到这一点,是否可能?

1 个答案:

答案 0 :(得分:2)

您可以使用JOIN执行删除操作

delete t2 from table2 t2
join table1 t1 on t2.col2 = t1.col1
where 
t2.col2 = 'a'
and t1.user_id = '100001'