SQLite / Postgres SQL查询不同列

时间:2013-02-08 07:52:46

标签: sql sqlite postgresql

我一直在处理这个问题已经有一段时间了,我无法解决这个问题。就像这样,我的表格有case_no(字母数字),first_namelast_namedescription

我想要做的是为每个不同的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

我该怎么做?

2 个答案:

答案 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()可能会更快。
  • 您可以轻松地从同一行添加更多列。