为什么以下查询不起作用,这绝对超出了我的想法:
DELETE orig FROM revision AS orig JOIN (
SELECT id
FROM revision
GROUP BY id
HAVING COUNT(*) > 1
) AS joined ON orig.id = joined.id
WHERE orig.id=1
ORDER BY orig.delta ASC
LIMIT 1
错误在第 8 行抛出,所以ORDER BY
子句。但是,我看不出它有什么问题(该表revision
确实有一个名为 的列delta
)。此外,更改DELETE orig
为SELECT *
会导致完美的工作命令。
是否可能delta
未加载 -column?或者是什么导致了这个错误?
编辑
好吧,我不知道您不能在查询中使用ORDER BY
多行。DELETE
好吧,我想要完成的是我删除了表中的一行,该行的 id 出现多次(在生产中将是 5)并且具有该 id 的所有行的最小增量。
即我在修订表中有两行,都具有相同的ID。我现在想删除两者中增量最小的那一行。这应该是可扩展的,因此我删除了所有行(具有相同的 id),但只有一个(具有最高增量的行)。