1

我想通过 sql 中的每个 id_foreign 获取最后的记录,例如我想要做什么:

输入:

id: 1, id_foreign: 5, value: 1 
id: 2, id_foreign: 4, value: 2 
id: 3, id_foreign: 4, value: 3 
id: 4, id_foreign: 5, value: 4 
id: 5, id_foreign: 5, value: 5 

输出:

id: 3, id_foreign: 4, value: 3 
id: 5, id_foreign: 5, value: 5

DISTINCT呢?还有什么想法吗?明白我?

尝试了这个解决方案:

SELECT * FROM table 
GROUP BY id_foreign 
ORDER BY id DESC

但输出我:

id: 1, id_foreign: 5, value: 1 
id: 2, id_foreign: 4, value: 2 

我也尝试了(ASC 和 DESC)和错误的输出。

4

1 回答 1

2

一个简单但不一定是最佳查询方法是使用NOT EXISTS

SELECT *
FROM MyTable t
WHERE NOT EXISTS (
    SELECT * FROM MyTable tt WHERE tt.id_foreign=t.id_foreign AND tt.id > t.id
)

SqlFiddle 上的演示。

于 2013-09-04T19:50:59.450 回答