我試圖使用GROUP BY和HAVING來選擇壘球數據庫中的球員數量,但沒有得到我期望的結果。有人能幫我理解這個查詢有什麼問題嗎?我認爲這是一個簡單的錯誤,我忽略了。與GROUP BY和HAVING相關的MySQL查詢
SELECT player_id AS 'players', SUM(sb_stats_HR) FROM
`softball_stats` AS 'homers' GROUP BY 'players' HAVING 'homers' > 3;
在此先感謝。
我試圖使用GROUP BY和HAVING來選擇壘球數據庫中的球員數量,但沒有得到我期望的結果。有人能幫我理解這個查詢有什麼問題嗎?我認爲這是一個簡單的錯誤,我忽略了。與GROUP BY和HAVING相關的MySQL查詢
SELECT player_id AS 'players', SUM(sb_stats_HR) FROM
`softball_stats` AS 'homers' GROUP BY 'players' HAVING 'homers' > 3;
在此先感謝。
這應該工作。
SELECT
player_id AS 'players',
SUM(sb_stats_HR) AS 'homers'
FROM softball_stats
GROUP BY player_id
HAVING SUM(sb_stats_HR) > 3;
刻度線用於包圍文本。反引號用於包含列或表別名。因此,您的查詢不起作用,因爲您試圖將列別名與包含字符的文本放在一起。另外,您正試圖在表別名上使用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
子句中使用),我選擇不使用他們,爲了清晰起見。首先了解它如何在最基本的層面上工作,然後你就可以使用這些技巧。
這也是有幫助的。謝謝。 – Jim
您正在複製OP的查詢...或者,與OP有什麼不同? – Barranka
我沒有得到你。請詳細說明。 – Aditya
謝謝,我會把它標記爲已經過了5分鐘的窗口。我實際上在上面錯誤地製作了我的問題。我的原始查詢中的「FROM softball_stats」前面有AS'homers',但它仍然不起作用。不過,你的解決方案就像一個魅力一樣。 – Jim