我希望了解如何从具有两个主键的SQL表中过滤出一个select
。以下是示例:
╔═══════════════════╦════════════════════╦════════════╗
║ First Primary Key ║ Second Primary Key ║ Data ║
╠═══════════════════╬════════════════════╬════════════╣
║ 1 ║ 1 ║ Bla,bla,bla║
║ 1 ║ 2 ║ Bla,bla,bla║
║ 1 ║ 3 ║ Bla,bla,bla║
║ 1 ║ 4 ║ Bla,bla,bla║
║ 2 ║ 5 ║ Bla,bla,bla║
║ 2 ║ 6 ║ Bla,bla,bla║
║ 2 ║ 7 ║ Bla,bla,bla║
║ 3 ║ 8 ║ Bla,bla,bla║
║ 4 ║ 9 ║ Bla,bla,bla║
║ 4 ║ 10 ║ Bla,bla,bla║
║ 4 ║ 11 ║ Bla,bla,bla║
║ 4 ║ 12 ║ Bla,bla,bla║
╚═══════════════════╩════════════════════╩════════════╝
我希望你能将第一列进行去重,并从第二列中仅取
max(Second_Primary_Key)
。我想要的结果是:
╔═══════════════════╦════════════════════╦════════════╗
║ First_Primary_Key ║ Second_Primary_Key ║ Data ║
╠═══════════════════╬════════════════════╬════════════╣
║ 1 ║ 4 ║ Bla,bla,bla║
║ 2 ║ 7 ║ Bla,bla,bla║
║ 3 ║ 8 ║ Bla,bla,bla║
║ 4 ║ 12 ║ Bla,bla,bla║
╚═══════════════════╩════════════════════╩════════════╝
结构应该像这样:
select * from foo
where (distinct First_Primary_Key) and max(Second_Primary_Key)
desc
关键字正是为了这个目的而存在的,以便每个First_PK
下最大的Second_PK
首先出现(因此行号为1)。我有什么遗漏的吗? - Giorgos Altanis