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

标签 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 的变量。现在我想删除 table2col2='a' 的所有行,但我需要检查 table1.user_id = $user_id (在本例中,删除之前先在 table1 中添加 $user_id = '100001'

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

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

我可以使用 PHP 和 MySQL 使用两个单独的查询来做到这一点。但我想通过一个查询来做到这一点,这可能吗?

最佳答案

您可以使用 JOIN 执行删除操作,如下所示

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

关于php - 如何在删除另一个表中的行之前检查现有行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32810104/

相关文章:

postgresql - 限制 Postgres 删除

mysql - 外键引用自己的表?

sql - 使用联接删除 sybase 中的行

php - 问题持久化嵌套的嵌套嵌入文档

php - 在 fatfree (f3) 中找不到类 'MongoDB'

mysql - 如何为逗号分隔字段中的每个值返回单行?

python - 如何使用不同的数据多次执行相同的查询?

sql - 删除重复记录

php - 带有可选字段的 REST API 端点 .htaccess (PHP)

php - 此数组插入的更短语法