我有一张桌子,里面有像这样的字段:
ID, COL1, COL2, BOOK, PAGE
我只希望每个不同的ID
获得一个结果。我要以此为依据的是按此顺序偏爱的最大BOOK
和PAGE
。因此,我将选择具有最大BOOK
的行,并在这些行中为每个PAGE
选择具有最大ID
的行。为此,我正在用MS ACCESS编写SQL。
我要实现的示例:
ID COL1 COL2 BOOK PAGE
1 X Y 10 12
1 X Z 10 14
2 Y W 14 7
3 J K 15 9
3 J K 16 6
说我有类似上面的内容。我最终会得到:
ID COL1 COL2 BOOK PAGE
1 X Z 10 14
2 Y W 14 7
3 J K 16 6
答案 0 :(得分:1)
这就像described according to my SQL Fiddle(对于MySQL)
read()
编辑:添加了适用于SQL Server和MS-Access的代码
(显然,除非在GROUP BY子句中,否则它们不允许您包含字段
结果相同-different SQL Fiddle here
SELECT Table1.ID, Col1, Col2, Book, Max(Page) AS MaxPage FROM Table1
INNER JOIN
( SELECT ID, MAX(`Book`) AS MaxBook
FROM Table1
GROUP BY ID) AS t1
ON Table1.ID = t1.ID
AND Table1.Book = t1.MaxBook
Group BY Table1.ID, Book
SQL输出示例
答案 1 :(得分:0)
您可以使用not exists
和相关的子查询:
select t.*
from t
where not exists (select 1
from t as t2
where t2.id = t.id and
t2.book > t.book or
(t2.book = t.book and t2.page > t.page)
);