MYSQL 选择最大值并删除

标签 mysql sql

我的脚本中有一个记录交易的表,每个交易都有一个唯一的 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 BYLIMIT .

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/

相关文章:

PhpMyAdmin 不工作 - XAMPP

javascript - 书架更改列数据类型

php - 带有条件的mysql查询计数,结果为数字

mysql - 如何对多个列进行排名?

sql - NOT EXISTS、NOT IN 和 LEFT JOIN WHERE IS NULL 之间有什么区别?

java - MySQL:如何通过 JDBC 使用一组值来约束值对?

sql - 如何使用 ms sql 进行更新和排序

php - 使用 PHP MySql 通过比较不同数据库中的两个不同列来检索表中的列

python - pyodbc问题下的更新声明

sql - 在 PostgreSQL 中将 select 语句嵌套在 array_to_json(array_agg(row_to_json())) 内