DELETE TOP 语句的正确语法是什么?

时间:2021-06-26 17:40:02

标签: mysql sql sql-delete delete-row

我只想删除“trader_inventory”表的 1 行,其中“item_id”为 14,“trader_id”为 1。 这是我试过的代码:

DELETE TOP 1 
FROM trader_inventory 
WHERE item_id = 14 AND trader_id = 1;

我也试过这个,看看它是否只适用于 1 个条件:

DELETE TOP 1
FROM trader_inventory
WHERE item_id = 14;

我也尝试在“TOP (1)”处使用括号

SQL 在 '1 FROM trader_inventory WHERE item_id = 14' 处显示语法错误

我无法解释为什么它不起作用。我现在正在努力寻找解决方案 2 个小时。我希望有一个人可以帮助我。 我看到有些人将他们的表名写在 [] 括号中,但这对我不起作用。 SQL 将其标记为错误。

1 个答案:

答案 0 :(得分:0)

在 MySQL 中,您将使用:

DELETE FROM trader_inventory
    WHERE item_id = 14 AND trader_id = 1
    LIMIT 1;

Here 是一个 db<>fiddle。

MySQL 中没有 SELECT TOP。如果您使用的是 SQL Server(如使用 TOP 所建议的那样),您可以使用子查询(或 CTE):

DELETE ti
    FROM (SELECT TOP (1) ti.*
          FROM trader_inventory ti
          WHERE item_id = 14 AND trader_id = 1
         ) ti;

注意:SELECT TOP 通常与 ORDER BY 一起使用,因此结果是一致的。这将删除任意行。如果您在具有相同行的表上运行它,则可以选择不同的行。