我一直在处理这个问题已经有一段时间了,我无法解决这个问题。就像这样,我的表格有case_no
(字母数字),first_name
,last_name
和description
。
我想要做的是为每个不同的first_name / last_name组合只选择一行。所以,例如
case_no | first_name | last_name
---------------------+----------------------------+------------------------
AAAAAAA | john | doe
BBBBBBB | Dog | dawg
CCCCCCC | Cat | kitten
DDDDDDD | john | doe
鉴于该示例我想要检索以下行:
case_no | first_name | last_name
---------------------+----------------------------+------------------------
BBBBBBB | Dog | dawg
CCCCCCC | Cat | kitten
DDDDDDD | john | doe
我该怎么做?
答案 0 :(得分:6)
试试这个,
SELECT MAX(CASE_NO), FIRST_NAME, LAST_NAME
FROM TABLE
GROUP BY FIRST_NAME, LAST_NAME;
答案 1 :(得分:3)
在PostgreSQL中:
SELECT DISTINCT ON (2, 3)
case_no, first_name, last_name
FROM tbl
ORDER BY 2, 3, case_no DESC NULLS LAST;
关于DISTINCT ON
:
与max()
的版本的区别:
first_name, last_name
排序。你可能想要也可能不想要。max()
可能会更快。