获取单行sql

获取单行sql,sql,sql-server,Sql,Sql Server,我有一张桌子 Id Stack ------------------ 1 a 1 b 2 c 2 d 我想得到下表的结果 Id Stack ------------------ 1 a 2 c 我使用DISTINCT,但它不起作用 我怎么做? 使用group by有什么解决方案吗?我不确定您需要应用的确切逻辑,但这

我有一张桌子

Id          Stack
------------------
1             a
1             b
2             c
2             d
我想得到下表的结果

Id          Stack
------------------
1             a
2             c
我使用DISTINCT,但它不起作用 我怎么做?
使用group by有什么解决方案吗?

我不确定您需要应用的确切逻辑,但这将返回您发布的结果:

select id,stack from (
select id , stack  , row_number() over (partition by id order by stack) as rn
) k where rn=1
SELECT  ID, MIN(Stack) AS Stack
FROM    T
GROUP BY ID
如果DBMS允许,您可以在
行号
函数中使用更高级的逻辑(问题中没有标记)


我不确定您需要应用的确切逻辑,但这将返回您发布的结果:

SELECT  ID, MIN(Stack) AS Stack
FROM    T
GROUP BY ID
如果DBMS允许,您可以在
行号
函数中使用更高级的逻辑(问题中没有标记)

这应该会有所帮助

select Id, min(Stack) from <TABLE_NAME>
group by Id
从中选择Id、最小值(堆栈)
按Id分组
这应该会有所帮助

select Id, min(Stack) from <TABLE_NAME>
group by Id
从中选择Id、最小值(堆栈)
按Id分组
此查询将为您提供如下结果

id          stack      row_number
----------- ---------- --------------------
1           a          1
1           b          2
2           c          1
2           d          2
现在将上面的查询作为子查询,并获取具有
row_number=1
将提供您想要的期望输出

select id,stack from 
       (
       SELECT id,
              stack,
              row_number() over (partition by id order by stack) as row_number 
       FROM   sampletb) x
where  x.row_number=1;

id          stack
----------- ----------
1           a
2           c
此查询将为您提供如下结果

id          stack      row_number
----------- ---------- --------------------
1           a          1
1           b          2
2           c          1
2           d          2
现在将上面的查询作为子查询,并获取具有
row_number=1
将提供您想要的期望输出

select id,stack from 
       (
       SELECT id,
              stack,
              row_number() over (partition by id order by stack) as row_number 
       FROM   sampletb) x
where  x.row_number=1;

id          stack
----------- ----------
1           a
2           c

您正在使用哪个数据库服务器?您正在使用哪个数据库服务器?您肯定希望
按堆栈排序
而不是
按id排序
,否则查询是不确定的?i、 e.对于ID=1.5,可以将a或b作为堆栈返回。我想会更好。此外,我认为如果他看到[1,1,1,1],那么它将被视为它们插入db的顺序,这将产生正确的结果。但是-最好按堆栈排序。您肯定希望
按堆栈排序
而不是
按id排序
,否则查询是不确定的?i、 e.对于ID=1.5,可以将a或b作为堆栈返回。我想会更好。此外,我认为如果他看到[1,1,1,1],那么它将被视为它们插入db的顺序,这将产生正确的结果。但是,最好按堆栈排序。