求解一个排列问题~
如果有两个表:
tabel1:
id userid companyname address classid ischecked registerdate
1 101 东莞易全 东莞市 2 true 2007-1-2
2 103 重庆建宏 重庆市 3 true 2007-1-3
3 102 其它公司 其它城市 2 true 2007-1-1
..................
table2:
id userid wareid productname price mark
1 101 2 网卡 100 说明
2 101 3 路由器 200 说明
2 103 4 交换机 200 说明
4 102 3 集线器 199 说明
........................
现在我的问题是先把两个表select...inner join,然后让相同的公司产品只显示一条排列在最前面(要查询完把有公司的产品之后),其它的产品再显示(要显示完所有公司的产品)~
我现在只能实现让相同公司的产品用聚合只显示一条排列最前面,而不能实现让相同公司的其它产品显示在其后面~
请问各位老大这个sql怎么实现?
------解决方案----------------------改了一下, 你看看吧
create table T1(id int, userid varchar(10), companyname varchar(10), address varchar(10), classid int, ischecked varchar(10), registerdate datetime)
insert T1 select 1, '101 ', '东莞易全 ', '东莞市 ', 2, 'true ', '2007-1-2 '
union all select 2, '103 ', '重庆建宏 ', '重庆市 ', 3, 'true ', '2007-1-3 '
union all select 3, '102 ', '其它公司 ', '其它城市 ', 2, 'true ', '2007-1-1 '
create table T2(id int, userid varchar(10), wareid int, productname varchar(10), price int, mark varchar(10))
insert T2 select 1, '101 ', 2, '网卡 ', 100, '说明 '
union all select 2, '101 ', 3, '路由器 ', 200, '说明 '
union all select 3, '103 ', 4, '交换机 ', 200, '说明 '
union all select 4, '102 ', 3, '集线器 ', 199, '说明 '
select *
from T1 as tmpA
inner join T2 as tmpB on tmpA.userid=tmpB.userid
order by
(
case when
not exists (select 1 from T2 where userid=tmpB.userid and id <tmpB.id) then -1
else tmpB.id
end
)