2013-11-15 199 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