如何将一行mysql显示为多行?

7y4bm7vi  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(384)

我需要一些帮助。我有一个简单的mysql查询:

  1. select '1,2,3,4,5,6' as Col1 from dual;

表1:

  1. Col1
  2. 1,2,3,4,5,6

我还有一张table2:

  1. service_id service_name
  2. 1 Service1
  3. 2 Service2

我尝试了下一个查询,但不起作用:

  1. select service_name from table2 where service_id in (select col1 from table1)

任何帮助都将不胜感激!

bxgwgixi

bxgwgixi1#

我不确定你到底想做什么,但我可以给你一些提示。
只有当您的服务id为“1,2,3,4,5,6”时,“in”子句才起作用。我知道你想做什么,但是数据库把col1的结果当作一个完整的数字字符串,包括所有的逗号,而不是单个的数字本身。如果您将其硬编码为“where in(1,2,3,4,5,6)”,您将得到匹配项。不用“in”子句,您可以连接表并使用like。
试试这个:

  1. SELECT
  2. table2.service_name
  3. FROM
  4. table2
  5. LEFT OUTER JOIN
  6. table1
  7. ON
  8. table1.col1 LIKE CONCAT('%', table2.service_id, '%')
  9. WHERE
  10. table1.col1 IS NOT NULL

我想那会做你想做的事。

展开查看全部
ff29svar

ff29svar2#

试试这个:
样本数据:

  1. create table `dual` (Col1 varchar(100));
  2. insert into `dual` values ('1,2,3,4,5,6');
  3. create table table2 (service_id int, service_name varchar(100));
  4. insert into table2 values
  5. (1, 'Service1'),
  6. (2, 'Service2');

t-sql:

  1. select service_name from table2 t2
  2. where exists(
  3. select 1 from `dual` d
  4. where locate(concat(',', t2.service_id, ','), concat(',', d.Col1, ',')) > 0
  5. );
展开查看全部

相关问题