我目前正在处理一个sql server table' suburb'它有一个suburb_id列和一个adjacent_suburb_ids列。 adjacent_suburb_ids列是逗号分隔的其他suburb_ids字符串。
我发现有些记录没有回复 -
例如" SuburbA"有"郊区B"在adjacent_suburb_ids中的id但是" SuburbB"没有" SuburbA"在adjacent_suburb_ids中的id
我需要识别所有不会对adjacent_suburbs做出反应的郊区,我可以使用SQL查询吗?
请不要对数据/表结构发表评论,因为它不在我的控制范围内,我无法对其进行更改。
答案 0 :(得分:2)
假设我正确理解了您的问题,您可以使用like
和not like
运算符将表格加入到自身中:
select s.suburb_id, s2.suburb_id as s2id
from suburb s
join suburb s2 on
s.suburb_id <> s2.suburb_id
and ',' + s2.adjacent_suburb_ids + ',' like
'%,' + cast(s.suburb_id as varchar(10)) + ',%'
and ',' + s.adjacent_suburb_ids + ',' not like
'%,' + cast(s2.suburb_id as varchar(10)) + ',%'
您需要在集合之前和之后连接逗号以在集合中进行搜索。是的,如果你有机会,你应该考虑规范化数据。