我正在尝试编写这样的子查询
SELECT GenreNaam,
GenreCount = (SELECT COUNT(GK.GenreID)
FROM GenreKoppel GK
WHERE GK.GenreID = G.GenreID)
FROM Genre G
但是我得到了错误
1054-“字段列表”中的未知列“ GenreCount”
我是子查询的新手,我做错了什么。
最佳答案
您正在使用SQL Server样式别名定义,该定义在MySQL中不起作用。而是使用AS
指示别名(或仅在子查询后仅声明别名的名称)。
SELECT GenreNaam,
(SELECT COUNT(GK.GenreID) FROM GenreKoppel GK
WHERE GK.GenreID = G.GenreID) AS GenreCount -- or just GenreCount
FROM Genre G
此查询也可以使用联接来编写:
SELECT G.GenreNaam,
COALESCE(GK.GenreCount, 0) AS GenreCount
FROM Genre G
LEFT JOIN
(
SELECT GenreID, COUNT(*) AS GenreCount
FROM GenreKoppel
GROUP BY GenreID
) GK
ON G.GenreID = GK.GenreID
这种替代方法也使用子查询,但与原始查询中的子查询不同,它没有关联。我希望加入方法通常能更快地运行。
关于mysql - SQL子查询不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41507312/