1

我已经处理这个问题已经有一段时间了,我无法解决这个问题。就像这样,我有case_no(字母数字)first_namelast_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

我该怎么做呢?

4

2 回答 2

6

试试这个,

SELECT MAX(CASE_NO), FIRST_NAME, LAST_NAME
FROM TABLE
GROUP BY FIRST_NAME, LAST_NAME;
于 2013-02-08T07:58:01.827 回答
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()可能会更快。
  • 您可以轻松地从同一行添加更多列。
于 2013-02-08T08:43:56.330 回答