Мне нужна помощь, пожалуйста. У меня есть простой 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)
Любая помощь будет оценена!
Попробуй это:
Пример данных:
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
);
Я не уверен, что вы пытаетесь сделать, но я могу дать вам пару намеков.
Ваш пункт "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
Я думаю, что будет делать то, что, как я думаю, вы хотите сделать.
dual
похоже, говорит о том, что вы используете оракула .