请给我一些帮助。 我有这个简单的mysql查询:
select '1,2,3,4,5,6' as Col1 from dual;
和表格1:
Col1
1,2,3,4,5,6
我还有另一个table2:
service_id service_name
1 Service1
2 Service2
我尝试了下一个查询,但不起作用:
select service_name from table2 where service_id in (select col1 from table1)
任何帮助将不胜感激!
答案 0 :(得分:1)
尝试一下:
样本数据:
create table `dual` (Col1 varchar(100));
insert into `dual` values ('1,2,3,4,5,6');
create table table2 (service_id int, service_name varchar(100));
insert into table2 values
(1, 'Service1'),
(2, 'Service2');
T-SQL:
select service_name from table2 t2
where exists(
select 1 from `dual` d
where locate(concat(',', t2.service_id, ','), concat(',', d.Col1, ',')) > 0
);
答案 1 :(得分:0)
我不确定您要完成什么,但是我可以给您一些提示。
仅当您的service_id为'1,2,3,4,5,6'时,您的“ IN”子句才有效。我可以看到您正在尝试执行的操作,但是数据库将col1的结果视为包含所有逗号的整个数字字符串,而不是单个数字本身。如果将其硬编码为“ WHERE IN(1,2,3,4,5,6)”,那么您将获得匹配。除了使用“ IN”子句外,您还可以联接表并使用LIKE。
尝试一下:
SELECT
table2.service_name
FROM
table2
LEFT OUTER JOIN
table1
ON
table1.col1 LIKE CONCAT('%', table2.service_id, '%')
WHERE
table1.col1 IS NOT NULL
我认为那会做我想做的事。