我在表格中有以下数据:
id name alarmId alarmUnit alarmLevel
1 test voltage psu warning
2 test voltage psu ceasing
3 test voltage psu warning
4 test temp rcc warning
5 test temp rcc ceasing
Run Code Online (Sandbox Code Playgroud)
我只想显示有关每个列组(alarmId,alarmUnit)的最新信息,因此结果应如下所示:
3 test voltage psu warning
5 test temp rcc ceasing
Run Code Online (Sandbox Code Playgroud)
我到目前为止尝试过:
SELECT MAX(id) as id,name,alarmId,alarmUnit,alarmLevel GROUP BY alarmId,alarmUnit;
选定的ID似乎没问题,但选定的行与它们不对应.你可以帮帮我吗?
我有一个简单的表评论(id INT, revision INT, comment VARCHAR(140))与这样的一些内容:
1|1|hallo1|
1|2|hallo2|
1|3|hallo3|
2|1|hallo1|
2|2|hallo2|
Run Code Online (Sandbox Code Playgroud)
我正在搜索一个SQL语句,它将返回具有最高版本的每个评论:
1|3|hallo3|
2|2|hallo2|
Run Code Online (Sandbox Code Playgroud)
我想出了这个解决方案:
select id, revision, comment
from comments
where revision = (
select max(revision)
from comments as f
where f.id = comments.id
);
Run Code Online (Sandbox Code Playgroud)
但是在大型数据集上它很慢.有没有更好的查询来实现这一目标?
我有这张桌子:

我想提出,将返回每个请求deal_id具有最高的行timestamp,并相应status_id.
所以对于这个例子,我会返回2行:
1226, 3, 2009-08-18 12:10:25
1227, 2, 2009-08-17 14:31:25
Run Code Online (Sandbox Code Playgroud)
我尝试用这个查询来做
SELECT deal_id, status_id, max(timestamp) FROM deal_status GROUP BY deal_id
Run Code Online (Sandbox Code Playgroud)
但它会回错status_id:
1226, 1, 2009-08-18 12:10:25
1227, 1, 2009-08-17 14:31:25
Run Code Online (Sandbox Code Playgroud)