我对SQL和编码一般还是陌生的。我没有在其中找到语法错误。
SELECT t1.artist, t1.year, t2.total
FROM tutorial.billboard_top_100_year_end AS 't1'
JOIN (SELECT billboard_top_100_year_end.artist, COUNT(*) AS 'total'
FROM tutorial.billboard_top_100_year_end
GROUP BY year) AS 't2'
ON t1.artist = t2.artist AND t1.total = t2.total
WHERE artist LIKE 'Elvis%'
LIMIT 100;
这导致
错误:“ t1”处或附近的语法错误位置:149选择t1.artist,t1.year,t2.total从tutorial.billboard_top_100_year_end AS't1'^加入(SELECT billboard_top_100_year_end.artist,COUNT(*)个“总计”]
在此之前我收到错误
错误:列必须出现在GROUP BY子句中或在聚合函数中使用
并进行了调整以解决此问题
任何帮助将不胜感激!
查看您提供给我们的代码段中有很多与众不同的地方。
您的AS 'x'
语句不正确。
您可以不使用换行,也可以使用反引号,但不支持单引号。
AS `t1` -- Correct.
AS t1 -- Correct.
AS 't1' -- This is a syntax error.
另外,在查询末尾附近
WHERE artist LIKE 'Elvis%'
artist
不明确。您是指哪个艺术家?以下任何一种都可以。
WHERE t1.artist LIKE 'Elvis%' -- Or
WHERE t2.artist LIKE 'Elvis%'
此外,您的GROUP BY
陈述没有多大意义。您试图获取按year
分组的每一行的计数。但是您似乎也想在行中使用artist
。但是,您不能在一年中将所有艺术家都放在一个专栏中。您还需要按artist
分组。此外,除非选择它们,否则您将无法看到正在分组的year
。
SELECT artist, year, COUNT(*) AS `total`
FROM tutorial.billboard_top_100_year_end
GROUP BY artist, year
您的查询可能有更多错误,但是从阅读中可以明显看出这是唯一的错误。
如果您希望人们发现与此有关的更多问题,则需要提供一个最小的工作示例(包括创建表等)。将来,我建议先构建一个有效的查询,然后再添加它以获取所需的内容,并确保每次进行更改时都运行该查询。这样,您就可以在添加故障后立即发现它们,而不是构建包含许多同时出现的问题的完整查询。