sql 有两张表①②(如图)通过sql语句查询得到如下结果
例如select*from①whereA……‘A1,A2,A3’得到表①中为A1,A2,A3的6行数据;select*from①whereA……‘A1,A2’得到表①中为...
例如select * from ① where A……‘A1,A2,A3’ 得到表①中为A1,A2,A3的6行数据;
select * from ① where A……‘A1,A2’ 得到表①中为A1,A2的5行数据。
求高手能不能通过select语句实现?该怎么写?
select * from tb1 where A in (select F from tb2)
如果F值为A1,可以查到A值为A1的三条数据,
但是F值为A1,A2,A3,就查不出数据了 展开
select * from ① where A……‘A1,A2’ 得到表①中为A1,A2的5行数据。
求高手能不能通过select语句实现?该怎么写?
select * from tb1 where A in (select F from tb2)
如果F值为A1,可以查到A值为A1的三条数据,
但是F值为A1,A2,A3,就查不出数据了 展开
3个回答
展开全部
不明白你把表2放这儿干嘛,不知道这是不是你要的:
select * from tb1 where A in ('A1','A2','A3')
select * from tb1 where A in ('A1','A2')
select * from tb1 where A in ('A1','A2','A3')
select * from tb1 where A in ('A1','A2')
更多追问追答
追问
因为我要把表②的F字段跟表①A字段关联执行,不是单纯的带入数值
追答
明白了,你是要把表2的F字段作为查询表1的条件,是这样吗?
动态语句:
DECLARE @s VARCHAR(255)
SELECT TOP 1 @s = REPLACE(F,',',''',''') FROM tb2 --首先把F字段处理成A1','A2',‘A3这样的字串,以为稍后拼接。由于举例,这儿只是简单的TOP一下
EXEC ('SELECT * FROM tb1 WHERE A IN ('''+@s+''')') --用EXEC执行拼接好的语句,此时这条语句是这样子:
select * from tb1 where A in ('A1')
PS:可以通过PRINT命令先预览拼接的语句,检查拼接正确与否。
实际中你大概不可能用TOP赋值,而是逐行获取F字段,并逐次查询tb1,所以实际上你可能要使用游标遍历tb2才行。
展开全部
select * from tb1 where A in ('A1','A2','A3')
select * from tb2 where F like '%A1%' or F like '%A2%'
select * from tb2 where F like '%A1%' or F like '%A2%'
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
完全没看懂 这个和表2有嘛关系
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询