我需要查询以选择某些列范围的最后一行。
例子,整个表:
----------------------
| ID | NAME | FOO_ID |
|--------------------|
| 1 | jQue | 2 |
| 2 | Prot | 2 |
| 3 | Node | 2 |
| 4 | Moo | 1 |
| 5 | Scri | 1 |
----------------------
查询返回的行,它返回
FOO_ID
列范围内的所有“最后一行”:----------------------
| ID | NAME | FOO_ID |
|--------------------|
| 3 | Node | 2 |
| 5 | Scri | 1 |
----------------------
有人可以帮我编码该查询吗?
最佳答案
我会用其中最清楚的一种:
a1ex07的查询
要么
SELECT *
FROM the_table
WHERE id IN
( SELECT MAX(id)
FROM the_table
GROUP
BY foo_id
)
;
要么
SELECT *
FROM the_table a
WHERE NOT EXISTS
( SELECT 1
FROM the_table b
WHERE b.foo_id = a.foo_id
AND b.id > a.id
)
;
要么
SELECT a.*
FROM the_table a
LEFT
OUTER
JOIN the_table b
ON b.foo_id = a.foo_id
AND b.id > a.id
WHERE b.id IS NULL
;
(我自己的偏好是带有
IN
的版本,但是您可能会有所不同。)关于mysql - 如何在MySQL中选择某一列范围的所有最后一行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8190398/