我的脚本中有一个记录交易的表,每个交易都有一个唯一的 ID 号(自动递增),我想选择最高的交易 ID 行并将其删除。我有类似的东西
SELECT * FROM trans WHERE (Select MAX(tranID)FROM Trans);
获取信息和
DELETE FROM Trans WHERE (SELECT MAX(trainID));
删除它。
现在这些工作了,但他们选择了所有内容并删除了所有条目。
有什么想法吗?
最佳答案
MySQL supports a LIMIT
for DELETE
queries .与其尝试获取您发现在完成子查询时会导致错误的 MAX(trainID)
,不如指定 ORDER BY
和 LIMIT
.
DELETE FROM Trans
ORDER BY trainID DESC
LIMIT 1
它应该可以替代地加入一个子查询而不是尝试在 WHERE
中使用它:
DELETE t.*
FROM
Trans t
INNER JOIN (SELECT MAX(trainID) maxt FROM Trans) tmax ON t.trainID = tmax.maxt
Here are both version in action
你的删除所有行,因为 (SELECT MAX(trainID))
评估为 bool 值 TRUE
,它匹配所有行
关于MYSQL 选择最大值并删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22049899/