各位大侠,请教一条SQ语句,谢谢啦!

打酱油的无证程序猿 2010-05-17 02:09:04
表tab2

ItemName ItemValue
-------------------------------------------------- -----------
张三 1
张三 2
李四 1
李四 5
王五 1


我想要的结果是
ItemName ItemValue
-------------------------------------------------- -----------
张三 1(2也行,如果有多个值,我只要求随便取1个就行了)
李四 1(5也行,如果有多个值,我只要求随便取1个就行了)
王五 1

用select distinct可以去掉重复记录,但我这种需求也可以用select distinct吗?谢谢啊!!!
...全文
87 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
meteoraincheng 2010-05-17
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 huangchbao 的回复:]
人家楼主问的那么简单,上面整那些乱造没用的干啥啊!

select * from 表名 group by ItemName;
[/Quote]

根据iterName分组的,能够取到所有字段?
v1ctory1216 2010-05-17
  • 打赏
  • 举报
回复
你的这个需求不能用distinct,因为你一查查的是两列,用distinct是除去查询结果集的重复行,此例子中包含第二列,你第二列的1和5都不是重复的。楼上的几位都能满足你的需求的。顶楼上的几位高手
htl258_Tony 2010-05-17
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 sql_sf 的回复:]
引用 13 楼 huangchbao 的回复:
人家楼主问的那么简单,上面整那些乱造没用的干啥啊!

select * from 表名 group by ItemName;

如果多字段那未必适用了
2个字段min max自然简单的多
[/Quote]对的。
sql_sf 2010-05-17
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 huangchbao 的回复:]
人家楼主问的那么简单,上面整那些乱造没用的干啥啊!

select * from 表名 group by ItemName;
[/Quote]
如果多字段那未必适用了
2个字段min max自然简单的多
htl258_Tony 2010-05-17
  • 打赏
  • 举报
回复
--> 生成测试数据表: [tab2]
IF OBJECT_ID('[tab2]') IS NOT NULL
DROP TABLE [tab2]
GO
CREATE TABLE [tab2] ([ItemName] [nvarchar](10),[ItemValue] [int])
INSERT INTO [tab2]
SELECT '张三','1' UNION ALL
SELECT '张三','2' UNION ALL
SELECT '李四','1' UNION ALL
SELECT '李四','5' UNION ALL
SELECT '王五','1'

--SELECT * FROM [tab2]

-->SQL查询如下:
--1.
;WITH T AS
(
SELECT RN=ROW_NUMBER()OVER(PARTITION BY ItemName ORDER BY GETDATE()),*
FROM tab2
)
SELECT [ItemName],[ItemValue]
FROM T
WHERE RN=1
/*
ItemName ItemValue
---------- -----------
李四 1
王五 1
张三 1

(3 行受影响)
*/
sql_sf 2010-05-17
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 cnlmgsoft 的回复:]
xys_777大侠的方法不错,谢谢各位,结贴
[/Quote]
那6楼的不是一样
huangchbao 2010-05-17
  • 打赏
  • 举报
回复
人家楼主问的那么简单,上面整那些乱造没用的干啥啊!

select * from 表名 group by ItemName;

  • 打赏
  • 举报
回复
xys_777大侠的方法不错,谢谢各位,结贴
youyou2404 2010-05-17
  • 打赏
  • 举报
回复
结贴.
youyou2404 2010-05-17
  • 打赏
  • 举报
回复


--> 测试数据: #tab2
if object_id('tempdb.dbo.#tab2') is not null drop table #tab2
create table #tab2 (ItemName varchar(4),ItemValue int)
insert into #tab2
select '张三',1 union all
select '张三',2 union all
select '李四',1 union all
select '李四',5 union all
select '王五',1

with cte as (select row_number() over(order by getdate()) id,itemname,itemvalue from #tab2 t )

select itemname,itemvalue from cte t where not exists(select 1 from cte where t.itemname=itemname and t.id>id)

itemname itemvalue
-------- -----------
张三 1
李四 1
王五 1

(3 行受影响)
Zoezs 2010-05-17
  • 打赏
  • 举报
回复

select ItemName, ItemValue from
(select row=row_number() over(partition by ItemName order by ItemValue)
,* from tab2) T
where row=1
永生天地 2010-05-17
  • 打赏
  • 举报
回复
最大
select ItemName ,max(ItemValue ) from tab2 group by ItemName


最小
select ItemName ,min(ItemValue ) from tab2 group by ItemName
sql_sf 2010-05-17
  • 打赏
  • 举报
回复
select *
from tab2 t
where not exists(select 1
from tab2
where ItemName =t.ItemName and ItemValue>t.ItemValue)
chuifengde 2010-05-17
  • 打赏
  • 举报
回复
select itemname,min(Itemvalue) from [Table] group by itemname
Zoezs 2010-05-17
  • 打赏
  • 举报
回复
select ItemName, ItemValue(
select row=row_number() over(partition by ItemName order by ItemValue)
,* from tab2)T where row=1
  • 打赏
  • 举报
回复
如果有多个值,只要求随便取1个值 就行了
youyou2404 2010-05-17
  • 打赏
  • 举报
回复


--> 测试数据: #tab2
if object_id('tempdb.dbo.#tab2') is not null drop table #tab2
create table #tab2 (ItemName varchar(4),ItemValue int)
insert into #tab2
select '张三',1 union all
select '张三',2 union all
select '李四',1 union all
select '李四',5 union all
select '王五',1

select * from #tab2 t
where not exists(select 1 from #tab2 where t.itemname=itemname and t.itemvalue>itemvalue)
(5 行受影响)
ItemName ItemValue
-------- -----------
张三 1
李四 1
王五 1

(3 行受影响)
永生天地 2010-05-17
  • 打赏
  • 举报
回复
select ItemName ,min(ItemValue ) from tab2 group by ItemName
sql_sf 2010-05-17
  • 打赏
  • 举报
回复
select *
from tab2 t
where ItemValue=(select min(ItemValue)
from tab2
where ItemName =t.ItemName )

34,576

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧