如何将一个Mysql行显示为多行?

时间:2018-06-23 07:51:03

标签: mysql

请给我一些帮助。 我有这个简单的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)

任何帮助将不胜感激!

2 个答案:

答案 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

我认为那会做我想做的事。