2013-11-15 200 views
2

我有它返回逗号sepreted整数 像使用GROUP_CONCAT结果:在第Mysql的

select GROUP_CONCAT(ids) from table2 

现在我想在这种情况下使用该结果在另一个查询 像

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

含水查询它将只考虑IN子句中的最低值。

回答

2

任何特殊理由不使用连接,并使用子查询

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

我@Alma同意,这不能在做,你也许可以用FIND_IN_SET做到这一点,但如果你可以在做它可能是一个更好的办法:

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