Как я могу отобразить одну строку Mysql на несколько строк?

0

Мне нужна помощь, пожалуйста. У меня есть простой mysql-запрос:

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

и таблица1:

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

И у меня есть другая таблица2:

service_id    service_name
1             Service1
2             Service2

Я пробовал следующий запрос, но не работал:

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

Любая помощь будет оценена!

  • 0
    Вы уверены, что это MySQL ? Использование dual похоже, говорит о том, что вы используете оракула .
  • 0
    Да! Это работает в MySQL тоже ...
Показать ещё 1 комментарий
Теги:

2 ответа

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
);
  • 0
    Большое спасибо! Работает! Это то, что мне нужно! Большое спасибо!
0

Я не уверен, что вы пытаетесь сделать, но я могу дать вам пару намеков.

Ваш пункт "IN" будет работать, только если ваш service_id "1,2,3,4,5,6". Я вижу, что вы пытаетесь сделать, но база данных обрабатывает результат из 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

Я думаю, что будет делать то, что, как я думаю, вы хотите сделать.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню