首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

筛选有关问题

2012-01-07 
筛选问题。表A:id省市1河北乐羊2新疆乐羊3湖南长沙4江西南昌5广州乐羊6云南长沙。。。。。。。。。。。。。。。。。。。。要求结

筛选问题。
表A:

id                         省                             市
1                       河北                           乐羊
2                       新疆                           乐羊
3                       湖南                           长沙
4                       江西                           南昌
5                       广州                           乐羊
6                       云南                           长沙
。。。。。。。。。。。。。。。。。。。。

要求结果:

id                         省                             市
1                       河北                           乐羊
2                       新疆                           乐羊
5                       广州                           乐羊
3                       湖南                           长沙
6                       云南                           长沙

即:市名相同,省份不同的记录。




[解决办法]
?

Select * From A Order By 市, id
[解决办法]
select * from A a where exists(select 1 from A b where b.市 = a.市)
[解决办法]
select * from a a1
where exists (
select 1 from a
where 省 <> a.省 and 市=a.市
)


[解决办法]
select * from 表A where 市 in
(select 市 from 表A group by 市 having count(市)> 0)



[解决办法]


--創建測試環境
Create Table A
(id Int,
省 Nvarchar(20),
市 Nvarchar(20))
--插入數據
Insert A Select 1, N '河北 ', N '乐羊 '
Union All Select 2, N '新疆 ', N '乐羊 '
Union All Select 3, N '湖南 ', N '长沙 '
Union All Select 4, N '江西 ', N '南昌 '


Union All Select 5, N '广州 ', N '乐羊 '
Union All Select 6, N '云南 ', N '长沙 '
Union All Select 7, N '云南 ', N '长沙 '
Union All Select 8, N '江西 ', N '南昌 '
Union All Select 9, N '河北 ', N '乐羊 '
GO
--測試
Select Min(A.id) As id, A.省, A.市 From A
Inner Join (Select 市, Min(id) As id From A Group By 市 Having Count(Distinct 省) > 1) B
On A.市 = B.市
Group By A.省, A.市
Order By Min(B.id), Min(A.id)
GO
--刪除測試環境
Drop Table A
--結果
/*
id省市
1河北乐羊
2新疆乐羊
5广州乐羊
3湖南长沙
6云南长沙
*/

热点排行