如何使用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.id
与 items.base_item
相关。如果 furniture.type
确实是匹配字段,请在子选择中使用它。
第二种方法是这样的:
DELETE items
FROM items INNER JOIN furniture
ON items.base_item = furniture.id
WHERE furniture.type = 'i'
我再次假设 items.base_item
与 furniture.id
相关。
哪个更好用(假设所有适用字段都已编制索引)可能取决于每个表中预期的行数和数据的基数。您可能想自己测试一下,看看哪个对您的用例更有效。
关于php - 使用 select mysql 删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19232825/