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

What is the correct syntax for DELETE TOP statement?

我只想删除 table“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 小时的解决方案。我希望有一个人可以帮助我。 我看到有些人在 [] 括号中写下他们的 table 名字,但这对我不起作用。 SQL 标记为错误。

在 MySQL 中,您将使用:

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

Here 是一个 db<>fiddle.

MySQL中没有SELECT TOP。如果您使用的是 SQL 服务器(如使用 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 一起使用,因此结果是一致的。这将删除任意行。如果你 运行 它在具有相同行的 table 上,则可以选择不同的行。