我想用idorig分组mysql记录并选择最大id以选择最新记录.
我的数据库内容是这样的:
ID | IDORIG | MESSAGE | STATUS
100 | 100 | azerty | 2
101 | 100 | azerty | 1
102 | 100 | azerty | 1
103 | 100 | azerty | 0
104 | 104 | azerty | 0
105 | 104 | azerty | 0
106 | 104 | azerty | 0
107 | 104 | azerty | 0
108 | 104 | azerty | 0
Run Code Online (Sandbox Code Playgroud)
我的SQL请求是:
SELECT MAX(id),message,idorig,status FROM messages GROUP BY idorig order by id desc
Run Code Online (Sandbox Code Playgroud)
sql返回好的id:102
但问题是,如果我尝试返回状态,我得到2而不是0
如何更改sql请求以获取组idorig的最新ID,甚至获取102而不是100的记录
Mat*_*wak 14
错误发生,因为MySQL不知道分组记录中的哪个状态会导致您.它知道你想从组中获取max(id),但根据状态不明显.一些SQL引擎会触发异常而不是MySQL.我猜它会从组返回第一条记录(在这种情况下状态= 2).你可以这样做
Select id, idorig, message, status where id in (SELECT MAX(id) FROM messages GROUP BY idorig)
Run Code Online (Sandbox Code Playgroud)
MySQL将获得每个组的Max(id)(这是唯一的),然后在父查询中使用它从这些详细记录中选择有趣的数据.
select ID,idorig,Message,Status from messages order by ID desc limit 1;
Run Code Online (Sandbox Code Playgroud)
或者
Select ID,idorig,Message,Status from messages where ID = (select max(ID) from messages);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
45888 次 |
| 最近记录: |