两张表中查询出不重复的记录,一条sql语句完成.谢谢大家

时间:2021-06-10 00:48:28
A.用户表

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

#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)

#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.订单内容))

#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.订单内容--保留所有不重复的订单内容

#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.订单内容))

#12


试一试....

#1


lz想保留哪一条定单内容,如果用户是同一个人的话

#2


--试试
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)

#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.订单内容))

#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.订单内容--保留所有不重复的订单内容

#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.订单内容))

#12


试一试....