删除mysql中选定的行

use*_*101 2 mysql sql select sql-delete

我想删除一组行,它们具有与此 SQL 选择相同的属性。

SELECT item_id, count(*) as item_in_order
FROM items
GROUP BY order_id
HAVING item_in_order = 1
Run Code Online (Sandbox Code Playgroud)

换句话说,这意味着我有订单项,我想删除仅包含一项的订单中的行。

例如:

item_id    order_id
1          1
2          2
3          2
4          3
5          3
6          4
Run Code Online (Sandbox Code Playgroud)

所以我想删除 item_id 为 1 和 6 的行。

Dee*_*rma 5

你可以使用这个查询

delete from items
where order_id in 
   (SELECT order_id
    FROM items
    GROUP BY order_id
    HAVING count(*)  = 1
   )
Run Code Online (Sandbox Code Playgroud)

它将删除 items 表中 order_id 仅存在一次的行

  • 看起来很清楚,我尝试了完全相同的操作,但结果是错误:查询错误(1093):您无法在 FROM 子句中指定用于更新的目标表“项目” (2认同)