请学习使用显式JOIN表示法,而不是旧的(1992年前)隐式连接表示法。
老式:
SELECT transactionTable.rating as MostCommonrating
FROM personTable, transactionTable
WHERE personTable.transactionid = transactionTable.transactionid
AND personTable.personid = 1
GROUP BY transactionTable.rating
ORDER BY COUNT(transactionTable.rating) desc
LIMIT 1
首选样式:
SELECT transactionTable.rating AS MostCommonrating
FROM personTable
JOIN transactionTable
ON personTable.transactionid = transactionTable.transactionid
WHERE personTable.personid = 1
GROUP BY transactionTable.rating
ORDER BY COUNT(transactionTable.rating) desc
LIMIT 1
每个JOIN都需要一个ON条件。
另外,personID
数据中的值是字符串,而不是数字,因此您需要编写
WHERE personTable.personid = "Ben"
您要查找的是一个聚合的聚合:在这种情况下,是一个计数的最大值。因此,任何通用解决方案都将同时涉及MAX和COUNT。您不能将MAX直接应用到COUNT,但是可以将MAX应用于子查询中某个列恰好是COUNT的列。