2012-07-11 161 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