sql 一个表中字段存多个数字,对应到另一个表中的值,怎么得到另个表对应的值。

表1Text1,2表2IDValue1A2B我想查表1,得到结果A,B。请各位高手帮忙。... 表1 Text
1,2
表2 ID Value
1 A
2 B

我想查表1,得到结果 A,B。请各位高手帮忙。
展开
 我来答
匿名用户
推荐于2016-11-21
展开全部
CREATE  TABLE  t1 (
  Text  varchar(10)
);
INSERT INTO t1 VALUES('1,2');


CREATE TABLE t2 (
  id  INT,
  Value  varchar(2)
);
INSERT INTO t2 VALUES(1, 'A');
INSERT INTO t2 VALUES(2, 'B');


SELECT 
  GROUP_CONCAT(t2.Value) 
FROM 
  t2, t1
WHERE 
  INSTR(CONCAT(',',  t1.Text, ','), CONCAT(',', CAST(t2.id as char), ',')) > 0;


+------------------------+
| GROUP_CONCAT(t2.Value) |
+------------------------+
| A,B                    |
+------------------------+
1 row in set (0.00 sec)




MySQL 下测试通过。

追问
sql server 中 GROUP_CONCAT不是 内置函数
追答
SELECT 
  cast(
  STUFF(
    (
    SELECT
      ',' +  Value  
    FROM
      t2
    WHERE
      CHARINDEX( ',' + RTRIM(cast(t2.id as char)) + ',',  ',' + t1.Text + ',' ) > 0
    FOR XML PATH('')
    ), 1, 1, '') 
  as varchar(20)) as result
FROM 
  t1;
go

result
--------------------
A,B

(1 行受影响)

SQL Server 2008 Express 下测试通过。

512578845
2013-07-04 · 超过55用户采纳过TA的回答
知道小有建树答主
回答量:122
采纳率:100%
帮助的人:122万
展开全部
如果你是sql server的 话;方法如下
select 表2.* from 表2 where (charindex(表2.id , (select text from 表1))) <>0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhouyou155
2013-07-04 · 超过26用户采纳过TA的回答
知道答主
回答量:209
采纳率:0%
帮助的人:45.6万
展开全部
select 表2.* from 表1,表2 where 表1.text in(select id from 表2)
你测试下...
追问
不行。。。。
追答
select distinct 表2.* from 表1,表2 where 表1.text in(select id from 表2)
这个测试过了...是可以的..
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式