mysql使用in子句将值传递给子查询

时间:2014-04-12 21:41:31

标签: mysql

为什么这不起作用:

SELECT * 
FROM   `group` AS G, 
       (SELECT sum(`count`) 
        FROM   `counter` 
        WHERE  `id` IN (G.`ids`)) t 
WHERE  G.id = '1' 
LIMIT  1;

我有问题将group.ids值传递给子查询IN子句。

group.ids字段的值为:

70,194,458,459,570,470

这可能吗?

我收到了这个错误:

  

'where子句'中的未知列'G.ids'

1 个答案:

答案 0 :(得分:0)

以下是一个可以解决您问题的查询,这里基本上您选择group的所有字段,countcounterFIND_IN_SET()匹配{{1}使用逗号分隔的String中的任何值。

c.id

Here是您应该知道的有关SELECT G.*, (SELECT sum(`count`) FROM `counter` c WHERE FIND_IN_SET(c.`id`, G.`ids`)) FROM `group` G WHERE G.id = 1 LIMIT 1 的一些额外信息。