筛选问题。
表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云南长沙
*/