所以我有以下常规查询:
SELECT
someCol,
COUNT(*),
GROUP_CONCAT(myTableID SEPARATOR ',')
FROM myTable
GROUP BY someCol
我想在子查询的IN子句中使用第三列中的myTableID列表。以下非工作查询说明了这一点:
# this does not work
SELECT
someCol,
COUNT(*),
( SELECT COUNT(mySubTable.*)
FROM mySubTable
WHERE mySubTable.foreignID IN GROUP_CONCAT(myTable.myTableID SEPERATOR ',')
) AS FOREIGN_COUNT
FROM myTable GROUP BY someCol
IN GROUP_CONCAT()
部分不起作用,因为GROUP_CONCAT()只返回带逗号的字符串,而不是实际的id列表或子查询。
我的问题是,是否可以将myTableID的聚合列表用作子查询的IN子句的一部分?
答案 0 :(得分:1)
使用'SUM'函数做这样的任务:
SELECT
someCol,
COUNT(*),
GROUP_CONCAT(myTableID SEPARATOR ','),
SUM(
( select COUNT(*) FROM mySubTable
WHERE mySubTable.foreignID = myTable.myTableId )
)
FROM myTable
GROUP BY someCol;