如何检索由子查询
下面的子查询返回一组值的最小值(S):如何检索由子查询
SELECT R.mID AS MID, AVG(R.stars) AS AVGSTARS FROM Rating R
GROUP BY R.mID
ORDER BY AVGRSTARS
返回下列值:
MID AVGSTARS
104 2.5000
103 2.5000
101 3.0000
108 3.3333
107 4.0000
106 4.5000
现在我要检索最小值(或多个)从其中发生该中间结果是
MID AVGSTARS
104 2.5000
103 2.5000
为了实现这一点,我已经写后续ing查询不工作:
SELECT INTER1.RMID FROM
(SELECT R.mID AS MID, AVG(R.stars) AS AVGSTARS FROM Rating R
GROUP BY R.mID
ORDER BY AVGRSTARS) INTER1
WHERE MIN(AVGRSTARS) = INTER1.AVRSTARS
我知道它不起作用,但我想写一个查询这些行。有人能帮帮我吗。
谢谢。
你可以使用:
WITH cte AS (
SELECT R.mID AS MID, AVG(R.stars) AS AVGSTARS
FROM Rating R GROUP BY R.mID)
SELECT MID, AVGSTARS
FROM cte
WHERE AVGSTARS = (SELECT MIN(AVGSTARS) FROM cte);
编辑:
的MySQL前8.0:
SELECT MID, AVGSTARS
FROM (SELECT R.mID AS MID, AVG(R.stars) AS AVGSTARS
FROM Rating R GROUP BY R.mID) sub
WHERE AVGSTARS = (SELECT MIN(AVGSTARS)
FROM (SELECT R.mID AS MID, AVG(R.stars) AS AVGSTARS
FROM Rating R GROUP BY R.mID) AS s)
什么是等效的MySQL兼容查询? –
@dsfasdfadf所以它不是SQLite原来的问题? MariaDB/MySQL 8.0应该像发布一样工作。 – lad2025
我正在练习MySQL和SQLite中的查询。在SQLite中,它工作得很好,但是由于我使用的版本是v6.3,所以问题在MySQL中发生 –
请提供类似[MCVE。例如。来自SQLite命令行工具的'.dump'用于合适的玩具数据库。并展示一些期望输出的例子。 – Yunnosch