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,就查不出数据了
展开
 我来答
ahdung
2012-09-13 · TA获得超过609个赞
知道小有建树答主
回答量:323
采纳率:100%
帮助的人:265万
展开全部
不明白你把表2放这儿干嘛,不知道这是不是你要的:
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才行。
wangfei325268
2012-09-14 · 超过13用户采纳过TA的回答
知道答主
回答量:76
采纳率:0%
帮助的人:41.5万
展开全部
select * from tb1 where A in ('A1','A2','A3')

select * from tb2 where F like '%A1%' or F like '%A2%'
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
wang_yi_20
2012-09-13 · TA获得超过134个赞
知道小有建树答主
回答量:154
采纳率:0%
帮助的人:113万
展开全部
完全没看懂 这个和表2有嘛关系
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式