表a:
id shi
4 沈阳,长春,厦门
5 长沙,宁波,长春
9 杭州,上海
表b:
sheng shi
福建 泉州
福建 南平
福建 厦门
福建 三明
福建 龙岩
福建 福州
福建 莆田
福建 漳州
福建 宁德
比如我知道是福建,想在a表里找出
5 长沙,宁波,长春
9 杭州,上海
这两条,如果时浙江想得到
4 沈阳,长春,厦门
请问SQL怎么写
解决方案 »
- SQL SERVER有没有系统操作日志?
- 数据同步插入
- NT AUTHORITY\SYSTEM LOGON 失败
- 请问sql server2000 支持中文吗?
- 在触发器中如何知道哪一条记录被修改或增加了。
- 求助:ASP.NET2.0+SQL Server2005的疑难问题,搞这个的朋友进来看看,谢谢!
- 这是SQL Server 的 Bug 吗,求解释呀求解释~~
- 多用户操作中,在内存中建立临时表,用不用每个用户都建立一个临时表名?
- 请问怎么样将*.HTM中数据转化为SQL中
- 如何卸载sql server. 怎么老是出现mssearch.exe在执行,而且怎么也删不掉。-----急急急
- 请教SQL查询效率优化问题?
- 关于数据导入后,ID自动增长问题。
LEFT JOIN B
ON ',' + A.SHI + ',' NOT LIKE '%,' + B.SHI + ',%'
AND B.SHENG = '福建'
WHERE B.SHI IS NULL
LEFT JOIN B
ON ',' + A.SHI + ',' LIKE '%,' + B.SHI + ',%'
AND B.SHENG = '福建'
WHERE B.SHI IS NULLSELECT A.* FROM A
LEFT JOIN B
ON ',' + A.SHI + ',' LIKE '%,' + B.SHI + ',%'
AND B.SHENG = '浙江'
WHERE B.SHI IS NULL
就目前的数据来看,表a,b没有直接关联项,不知道怎么解。猜测楼主意图,感觉这两个表可以这么设计:
A(城市):
ID 城市 省份
1 沈阳 1
2 长沙 2
3 杭州 3B(省份):
ID 省份
1 辽宁
2 湖南
3 浙江最后要选择省的城市的时候可以如下:
declare @result varchar(100) = ''
@省份名字 = '辽宁'
select @result = @result + 城市 + ', '
from A
inner join A on A.省份 = B.ID
AND B.省份 = @省份名字
create table tab_a
(id int, shi varchar(50))insert into tab_a
select 4, '沈阳,长春,厦门' union all
select 5, '长沙,宁波,长春' union all
select 9, '杭州,上海'create table tab_b
(sheng varchar(20), shi varchar(20))insert into tab_b
select '福建', '泉州' union all
select '福建', '南平' union all
select '福建', '厦门' union all
select '福建', '三明' union all
select '福建', '龙岩' union all
select '福建', '福州' union all
select '福建', '莆田' union all
select '福建', '漳州' union all
select '福建', '宁德' union all
select '浙江', '宁波' union all
select '浙江', '杭州'
-- 测试1,输入'福建'
select c.*
from tab_a c
inner join
(select t.id from
(select a.id,charindex(b.shi,a.shi) lc
from tab_a a cross join tab_b b
where b.sheng='福建') t
group by t.id having sum(t.lc)=0) d
on c.id=d.id/*
id shi
----------- --------------------------------------------------
5 长沙,宁波,长春
9 杭州,上海(2 row(s) affected)
*/
-- 测试2,输入'浙江'
select c.*
from tab_a c
inner join
(select t.id from
(select a.id,charindex(b.shi,a.shi) lc
from tab_a a cross join tab_b b
where b.sheng='浙江') t
group by t.id having sum(t.lc)=0) d
on c.id=d.id/*
id shi
----------- --------------------------------------------------
4 沈阳,长春,厦门(1 row(s) affected)
*/