ID 用户名
1 a
2 b
3 c
4 d
B.用户订单表
ID 用户ID 订单内容
1 1 dfdfdf
2 1 dgfhfhf
3 1 gjhgmngb
4 4 ererer
我想从用户的订单表中查询出每个用户的一条订单内容.只需要一条.用一条sql语句怎么做呢....用Distinct的话.订单内容出不来.Distinct是对全部字段进行判断重复消除...但我又想输出订单内容.
12 个解决方案
#1
lz想保留哪一条定单内容,如果用户是同一个人的话
#2
--试试
select 用户id,max(订单内容)
from t
group by 用户id
select 用户id,max(订单内容)
from t
group by 用户id
#3
保留订单内容最长的。
#4
select 用户id,min(订单内容) from b group by 用户id
#5
select * from 用户订单表 a
where not exists (select 1 from 用户订单表 where 用户ID = a.用户ID and id < a.id)
where not exists (select 1 from 用户订单表 where 用户ID = a.用户ID and id < a.id)
#6
保留订单内容.因为每个用户的订单内容是不可能都一样的.所以.用Distinct不合适...
#7
select a.用户名,b.订单内容 from 用户表 a,(select 用户ID,min(订单内容) 订单内容 from 用户订单表 group by 用户ID) b where a.id=b.用户ID
#8
declare @a table(ID int, 用户ID int, 订单内容 varchar(190))
insert @a select 1 ,1, 'dfdfdf'
union all select 2 ,1 ,'dgfhfhf'
union all select 3 ,1, 'gjhgmngb'
union all select 4 ,4, 'ererer'
select 用户id, 订单内容 from @a a where not exists(select 1 from @a where 用户id=a.用户id and len(订单内容)>len(a.订单内容))
insert @a select 1 ,1, 'dfdfdf'
union all select 2 ,1 ,'dgfhfhf'
union all select 3 ,1, 'gjhgmngb'
union all select 4 ,4, 'ererer'
select 用户id, 订单内容 from @a a where not exists(select 1 from @a where 用户id=a.用户id and len(订单内容)>len(a.订单内容))
#9
其实我的意思就是.取一个用户的一条订单记录.在订单表中,该用户的所有字段都要输出.
#10
select A.用户名,max(len(订单内容)) from A,B where A.ID=B.用户ID group by A.用户名--保留订单内容长的
select A.用户名,B.订单内容 from A,B where A.ID=B.用户ID group by A.用户名,B.订单内容--保留所有不重复的订单内容
select A.用户名,B.订单内容 from A,B where A.ID=B.用户ID group by A.用户名,B.订单内容--保留所有不重复的订单内容
#11
declare @a table(ID int, 用户ID int, 订单内容 varchar(190))
insert @a select 1 ,1, 'dfdfdf'
union all select 2 ,1 ,'dgfhfhf'
union all select 3 ,1, 'gjhgmngb'
union all select 4 ,4, 'ererer'
select id,用户id, 订单内容 from @a a where not exists(select 1 from @a where 用户id=a.用户id and len(订单内容)>len(a.订单内容))
insert @a select 1 ,1, 'dfdfdf'
union all select 2 ,1 ,'dgfhfhf'
union all select 3 ,1, 'gjhgmngb'
union all select 4 ,4, 'ererer'
select id,用户id, 订单内容 from @a a where not exists(select 1 from @a where 用户id=a.用户id and len(订单内容)>len(a.订单内容))
#12
试一试....
#1
lz想保留哪一条定单内容,如果用户是同一个人的话
#2
--试试
select 用户id,max(订单内容)
from t
group by 用户id
select 用户id,max(订单内容)
from t
group by 用户id
#3
保留订单内容最长的。
#4
select 用户id,min(订单内容) from b group by 用户id
#5
select * from 用户订单表 a
where not exists (select 1 from 用户订单表 where 用户ID = a.用户ID and id < a.id)
where not exists (select 1 from 用户订单表 where 用户ID = a.用户ID and id < a.id)
#6
保留订单内容.因为每个用户的订单内容是不可能都一样的.所以.用Distinct不合适...
#7
select a.用户名,b.订单内容 from 用户表 a,(select 用户ID,min(订单内容) 订单内容 from 用户订单表 group by 用户ID) b where a.id=b.用户ID
#8
declare @a table(ID int, 用户ID int, 订单内容 varchar(190))
insert @a select 1 ,1, 'dfdfdf'
union all select 2 ,1 ,'dgfhfhf'
union all select 3 ,1, 'gjhgmngb'
union all select 4 ,4, 'ererer'
select 用户id, 订单内容 from @a a where not exists(select 1 from @a where 用户id=a.用户id and len(订单内容)>len(a.订单内容))
insert @a select 1 ,1, 'dfdfdf'
union all select 2 ,1 ,'dgfhfhf'
union all select 3 ,1, 'gjhgmngb'
union all select 4 ,4, 'ererer'
select 用户id, 订单内容 from @a a where not exists(select 1 from @a where 用户id=a.用户id and len(订单内容)>len(a.订单内容))
#9
其实我的意思就是.取一个用户的一条订单记录.在订单表中,该用户的所有字段都要输出.
#10
select A.用户名,max(len(订单内容)) from A,B where A.ID=B.用户ID group by A.用户名--保留订单内容长的
select A.用户名,B.订单内容 from A,B where A.ID=B.用户ID group by A.用户名,B.订单内容--保留所有不重复的订单内容
select A.用户名,B.订单内容 from A,B where A.ID=B.用户ID group by A.用户名,B.订单内容--保留所有不重复的订单内容
#11
declare @a table(ID int, 用户ID int, 订单内容 varchar(190))
insert @a select 1 ,1, 'dfdfdf'
union all select 2 ,1 ,'dgfhfhf'
union all select 3 ,1, 'gjhgmngb'
union all select 4 ,4, 'ererer'
select id,用户id, 订单内容 from @a a where not exists(select 1 from @a where 用户id=a.用户id and len(订单内容)>len(a.订单内容))
insert @a select 1 ,1, 'dfdfdf'
union all select 2 ,1 ,'dgfhfhf'
union all select 3 ,1, 'gjhgmngb'
union all select 4 ,4, 'ererer'
select id,用户id, 订单内容 from @a a where not exists(select 1 from @a where 用户id=a.用户id and len(订单内容)>len(a.订单内容))
#12
试一试....