SQLite - 选择一列的 DISTINCT 并获取其他列

Posted

技术标签:

【中文标题】SQLite - 选择一列的 DISTINCT 并获取其他列【英文标题】:SQLite - SELECT DISTINCT of one column and get the others 【发布时间】:2013-06-21 01:24:43 【问题描述】:

我有一张这样的表格(但有更多列):

Code    Quantity         
-----   --------       
00001      1           
00002      1           
00002      1           
00002      2           
00003      2          
00003      1          

我想得到与 SELECT DISTINCT Code FROM table (00001,00002,00003) 相同的结果,但与所有其他表列相同。

更新: 如果我执行此操作:SELECT DISTINCT Code, Quantity from table 我明白了:

    Code    Quantity         
    -----   --------       
    00001      1           
    00002      1           
    00002      2           
    00003      1          
    00003      2  

我想得到:

    Code    Quantity         
    -----   --------       
    00001      1           
    00002      1                   
    00003      1 

提前致谢!

【问题讨论】:

所有其他列的输出值应该是多少?因此,从您自己的示例来看,如果代码为 00003,那么数量应该是多少(2、1 或其他)? 那么...你想要最低的Quantity,还是第一次出现? 【参考方案1】:

假设您使用的是 mysql(因为已标记问题),以下将为其他列返回任意值:

select *
from t
group by code;

但是,选择的特定值来自不确定的行。

【讨论】:

问题是针对 SQLite 的;不管怎样,答案都是一样的。【参考方案2】:

根据 Gordon 的回答,您可以订购一个子查询,这样 group by 将始终返回每个代码的最低数量。

select *
from (select * from t order by code desc, quantity asc)
group by code;

【讨论】:

以上是关于SQLite - 选择一列的 DISTINCT 并获取其他列的主要内容,如果未能解决你的问题,请参考以下文章

SQLite 在另一列的值上拆分列

1基数与选择性

原则 ORDER BY 列但 DISTINCT 在另一列

怎么用SQL语句查数据库中某一列是不是有重复项

在 2 个字段上应用 distinct 并获取每列的唯一数据

Scala Spark,比较两个 DataFrame 并选择另一列的值