获取单行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的顺序,这将产生正确的结果。但是,最好按堆栈排序。