2012-07-11 103 views
0
select GROUP_CONCAT(DISTINCT tbl1.logid) , 
(

    SELECT COUNT(DISTINCT tbl2.client_id) 
    FROM tbl_client tbl2 

    WHERE tbl2.con_id 
    IN (GROUP_CONCAT(DISTINCT tbl1.logid)) 


) as PC2, 

from tbl_table tbl1; 

我嘗試分配GROUP_CONCAT(DISTINCT tbl1.logid)的一個別名,並將其放置在IN(裏面的值),但仍是不工作了GROUP_CONCAT子查詢

父查詢返回像12,34,3,56 和我想在IN功能

這實際上並不是整個案件的使用,但我只是想弄清楚這一點,

+0

我刪除了標籤'oop','class'和'eval',因爲它們似乎不適用。如果我錯了,請解釋。我加了'sql'。 – Smandoli 2012-07-11 03:46:28

+0

組concat正在返回一個字符串。使用內部結果集IN() – Khaleel 2012-07-11 03:47:33

+0

啊是的,對不起,我忘了改變它的方式感謝..;) – avien 2012-07-11 03:48:10

回答

2

不能使用的輸出IN()的GROUP_CONCAT,因爲它返回一個字符串。使用IN()的子查詢的結果。

select GROUP_CONCAT(DISTINCT tbl1.logid) , 
(

SELECT COUNT(DISTINCT tbl2.client_id) 
FROM tbl_client tbl2 

WHERE tbl2.con_id 
IN (SELECT logid from tbl_table) 


) 

as PC2, 

from tbl_table tbl1; 
+0

你能告訴我怎麼樣? – avien 2012-07-11 04:35:55

+1

+1,而在IN子查詢中可能不需要DISTINCT。 – 2012-07-11 13:00:52