Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL查询不同行+最小值_Sql_Distinct - Fatal编程技术网

SQL查询不同行+最小值

SQL查询不同行+最小值,sql,distinct,Sql,Distinct,很抱歉成为noob,但在创建此查询时需要一些帮助: 桌子 需要为每个具有最小id的唯一C显示第一行 所以最终结果看起来像C1和C2是唯一的,C1只显示第一行,ID为1: id | C | S | T --- |--- |--- |--- 1 |C1 |S1 |DA 4 |C2 |S3 |DA 你能帮忙吗? 我尝试过使用distinct和INTERNAL join,但没有得到任何好的结果。我建议使用row\U编号: se

很抱歉成为noob,但在创建此查询时需要一些帮助:

桌子

需要为每个具有最小id的唯一C显示第一行

所以最终结果看起来像C1和C2是唯一的,C1只显示第一行,ID为1:

    id  | C  | S  | T   
    --- |--- |--- |---  
    1   |C1  |S1  |DA   
    4   |C2  |S3  |DA   
你能帮忙吗? 我尝试过使用distinct和INTERNAL join,但没有得到任何好的结果。

我建议使用row\U编号:

select id, c, s, t
from (select t.*, row_number() over (partition by c order by id) as seqnum
      from t
     ) t
where seqnum = 1
使用带有分区的函数,您将能够创建组,这些组将根据C列中从1到n开始的值为每个组提供行号。要选择第一行,可以使用RowNum=1


您可以使用C和所有其他列的最小值对它们进行分组

SELECT MIN(id),
       C,
       MIN(S),
       MIN(T)
  FROM table
 GROUP BY C
结果

id  C   S   T
1   C1  S1  DA
4   C2  S3  DA

s的最小值和t的最小值将导致每列的最小值,而不一定是与最低ID相关联的值。在处理了我头脑中的查询后,是的,您是正确的。
SELECT MIN(id),
       C,
       MIN(S),
       MIN(T)
  FROM table
 GROUP BY C
id  C   S   T
1   C1  S1  DA
4   C2  S3  DA