2013-11-15 4 views
2

я есть водн запрос, который возвращает запятая sepreted целые числа какИспользование GROUP_CONCAT результат в пункте Mysql

select GROUP_CONCAT(ids) from table2 

теперь я хочу, чтобы использовать этот результат в другом запросе как

select * from table1 where column in (select GROUP_CONCAT(ids) from table2) 

в этом случае он будет рассматривать только forst значение в разделе IN.

ответ

2

Любая особая причина не использовать соединение и с использованием суб запрос

select * from table1 t1 
JOIN table2 t2 on (t2.column = t1.ids) 
4

Я согласен с @Alma, что это не может быть сделано с IN, вы могли бы быть в состоянии сделать это с FIND_IN_SET, но если вы можете сделать это с IN это, вероятно, лучший подход:

SELECT * 
FROM table1 
WHERE find_in_set(ids, (
     SELECT GROUP_CONCAT(ids) 
     FROM table2 
    )) != 0; 

sqlfiddle demo

+0

его не так хорошо Если вы можете напрямую использовать 'IN()', 'GROUP_CONCAT', это нецелесообразно, потому что у него есть лимит символов, который вам нужно увеличить, если вы использовали в своем ответе, вам также нужно сообщить, когда это можно сделать простым способом то зачем сначала создавать набор, а затем применять 'find_in_set', это имеет смысл? –

+1

Я не говорю, что это хороший подход. Я советую использовать IN вместо этого, но я думаю, что это то, о чем он просил. –

+0

есть ли какой-либо другой способ, в котором используется предложение where для значений group_concat(), отличных от find_in_set – pitu

Смежные вопросы