我正在尝试编写像这样的子查询
SELECT GenreNaam,
GenreCount = (SELECT COUNT(GK.GenreID)
FROM GenreKoppel GK
WHERE GK.GenreID = G.GenreID)
FROM Genre G
但我收到错误
1054 - 未知专栏' GenreCount'在'字段列表'
我是子查询的新手,我做错了什么。
答案 0 :(得分:4)
您正在使用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
此替代方法也使用子查询,但与原始查询中的不相关。我希望连接方法一般运行得更快。