我在下面有这个查询并运行它,但它一直说我有MySQL
的不同版本?
我认为问题是WHERE IN及其子查询。
任何人都可以帮助我吗?
SELECT Field2, Field3, Count(Distinct Field1)
FROM learning.master
WHERE Field3 IN
(SELECT Field3, COUNT(Distinct Field1)
FROM learning.master_06302015
WHERE (Field2 IS NOT NULL AND Field3 IS NOT NULL AND Field7 IS NOT NULL)
GROUP BY Field3
ORDER BY COUNT(Distinct Field1)
LIMIT 10)
Group BY Field2, Field3;
答案 0 :(得分:1)
修改强>
当子查询中包含LIMIT时,使用联接操作而不是WHERE IN
。
(编辑删除了原始答案的第一部分。感谢Gordon指出这一点。)
<击>
只需从子查询的SELECT列表中删除此表达式 , COUNT(Distinct Field1)
。
像这样:
SELECT t.Field2
, t.Field3
, COUNT(DISTINCT t.Field1)
FROM learning.master t
WHERE Field3 IN ( SELECT o.Field3
FROM learning.master_06302015 o
WHERE o.Field2 IS NOT NULL
AND o.Field3 IS NOT NULL
AND o.Field7 IS NOT NULL
GROUP BY o.Field3
ORDER BY COUNT(DISTINCT o.Field1)
LIMIT 10
)
GROUP BY t.Field2, t.Field3
击> <击> 撞击>
或者,使用连接操作,如下所示:
SELECT t.Field2
, t.Field3
, COUNT(DISTINCT t.Field1)
FROM learning.master t
JOIN ( SELECT o.Field3
FROM learning.master_06302015 o
WHERE o.Field2 IS NOT NULL
AND o.Field3 IS NOT NULL
AND o.Field7 IS NOT NULL
GROUP BY o.Field3
ORDER BY COUNT(DISTINCT o.Field1)
LIMIT 10
) p
ON p.Field3 = t.field3
GROUP BY t.Field2, t.Field3