我正在尝试使用GROUP BY和HAVING选择垒球数据库中的玩家数量,但我没有得到我期望的结果。有人可以帮我理解这个查询有什么问题吗?我希望这是一个我忽略的简单错误。
SELECT player_id AS 'players', SUM(sb_stats_HR) FROM
`softball_stats` AS 'homers' GROUP BY 'players' HAVING 'homers' > 3;
提前感谢。
答案 0 :(得分:1)
这应该有用。
SELECT
player_id AS 'players',
SUM(sb_stats_HR) AS 'homers'
FROM softball_stats
GROUP BY player_id
HAVING SUM(sb_stats_HR) > 3;
答案 1 :(得分:1)
使用反引号,你正在玩字符串。
SELECT player_id AS `players`, SUM(sb_stats_HR)
FROM `softball_stats` AS `homers`
GROUP BY `player_id `
HAVING `softball_stats` > 3;
如果这不起作用,请使用一些示例数据编辑您的帖子。
答案 2 :(得分:0)
Ticks用于封闭文本。反引号用于包含列或表别名。所以你的查询不起作用,因为你试图用包含字符的文本括起列别名。此外,您尝试使用表别名上的having
进行过滤,而不是使用列别名进行过滤,这是不正确的。
使用此:
SELECT player_id AS players, SUM(sb_stats_HR)
FROM softball_stats
GROUP BY player_id
HAVING SUM(sb_stats_HR) > 3;
请注意,如果您的别名没有任何特殊字符或空格,则无需将它们括在反引号中。
如果你坚持使用反引号:
SELECT player_id AS `players`, SUM(sb_stats_HR)
FROM softball_stats
GROUP BY player_id
HAVING SUM(sb_stats_HR) > 3;
请注意,尽管可以在having
子句中使用列别名(您不能在group by
子句中使用它们),但为了清楚起见,我选择不使用它们。首先要了解它在最基本的层面是如何工作的,然后你可以使用这些技巧。