【发布时间】:2018-07-06 10:15:03
【问题描述】:
我正在使用 MySQL。这是我的架构:
表 b
Column Name | Type | Primary key
id | int | Yes
seq | int | Yes
amt | int
虚拟数据
id | seq | amt
1 | 1 | 4000
1 | 2 | 3000
1 | 3 | 2000
1 | 4 | 5000
2 | 1 | 4000
2 | 2 | 3000
3 | 1 | 2000
3 | 2 | 5000
我想选择具有等效 id 和 seq 最大值的记录。 这是我的 SQL
SELECT b.id, b.seq, b.amt
FROM b
WHERE b.id = 1
AND b.seq =
(SELECT max(b.seq) FROM b WHERE b.id = 1)
但我想知道是否有更优雅的方式来实现我想要的。 例如,
SELECT b.id, b.seq, b.amt
FROM b
WHERE b.id = 1
HAVING b.seq = max(b.seq)
但它没有按预期工作。它返回 0 行。
【问题讨论】:
-
@nammae...供您参考,HAVING 与结果组一起使用...意味着您可以将其与 GROUP BY 子句一起使用...例如
-
SQL,优雅没办法...