php - 使用 select mysql 删除

标签 php mysql sql

如何使用delete和select mysql删除行

我用这个行不工作:

delete from items T1 where T1.base_item = 
(SELECT T2.type,T2.id From furniture T2 where T2.type = 'i' );

最佳答案

这不起作用,因为 = 需要单个值,而子选择返回结果集。

您可以采用两种方法,您可以使用 IN() 子句,也可以在连接中删除。

第一个看起来像这样:

DELETE FROM items
WHERE base_item IN (SELECT id FROM furniture WHERE type = 'i')

请注意,仅应在子选择中指定一个字段。在这种情况下,我假设 furniture.iditems.base_item 相关。如果 furniture.type 确实是匹配字段,请在子选择中使用它。

第二种方法是这样的:

DELETE items
FROM items INNER JOIN furniture
  ON items.base_item = furniture.id
WHERE furniture.type = 'i'

我再次假设 items.base_itemfurniture.id 相关。

哪个更好用(假设所有适用字段都已编制索引)可能取决于每个表中预期的行数和数据的基数。您可能想自己测试一下,看看哪个对您的用例更有效。

关于php - 使用 select mysql 删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19232825/

相关文章:

javascript - append 函数将以前的数据附加到新数据

php - 如何使用最后一页上设置的变量动态填充新页面?

php - 使用 WordPress 在 Web 服务器上运行 C++ 应用程序

java - Hibernate/jpa 将 Java 日期持久保存为 H2 DB Sql 时间戳

mysql - SQL 与 If 不同

javascript - 在使用 Stripe 支付的处理订单期间禁用提交输入,或者如果 Stripe 弹出窗口消失则启用它们

mysql - 检索每组中的最后一条记录 - MySQL

mysql - 如何优化包含连接和子查询的 sql 联合

sql - 排除SQL查询结果-单表

Mysql 添加根据其他 2 列计算的日期时间列