【发布时间】:2015-09-17 19:57:56
【问题描述】:
我在下面有这个查询并运行它,但它一直说我有不同版本的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;
【问题讨论】:
-
是的,子查询有问题。子查询应该返回一个 single 表达式(列)。
-
如果主查询和子查询使用相同的表怎么办?
-
SELECT Field2, Field3, Count(Distinct Field1) FROM learning.master_06302015 WHERE Field3 IN (SELECT Field3 FROM learning.master_06302015 WHERE (Field2 IS NOT NULL AND Field3 IS NOT NULL AND Field7 IS NOT NULL) 组BY Field3 ORDER BY COUNT(Distinct Field1) DESC LIMIT 10;) Group BY Field2, Field3 ;
-
用表别名限定所有列引用。
SELECT t.Field1 FROM mytable t。只需为每个引用使用不同的别名。请参阅我的答案中的示例。
标签: mysql subquery where-clause where-in