任何人都可以幫助我理解MySQL的Group By如何工作以及我在做什麼錯誤?我正在使用一個包含兩個表格,拍賣和批次的數據庫。拍賣表中有一個'auctionid'的欄目,它將每個拍賣品與相關拍賣鏈接起來,拍賣和拍賣之間的關係很多。MySQL Group通過消除太多的信息
我從批次和拍賣中選擇了大量信息,包括使用幾個總和和計數(不同)功能在拍賣基礎上總計一些拍賣記錄。
我的查詢是這樣的:
SELECT
auction.`countryId`,
auction.`date`,
auction.`name`,
auction.`awardComments`,
lots.`lotName`,
lots.`region`,
lots.`popCovered`,
SUM(lots.'size'),
SUM(lots.`paired`),
SUM(lots.`unpaired`),
COUNT(DISTINCT 'lots.winner')
FROM auction join lots USING ('awardid')
GROUP BY lots.'awardid'
「awardid」是該拍賣表的主鍵,爲大量的表的外鍵。 'lotid'是批表的主鍵,但未使用。
當我運行此查詢時,我爲每次拍賣獲得一行,我正在尋找的是每一批的一行,拍賣信息與該拍賣中的每批次的相同,以及計數拍賣表中每次拍賣的總大小和獲獎者人數。如果我擺脫了查詢的'group by'和'sum'部分,那麼我會得到正確的行數,每個行都有一個。是否有一種方法可以通過sum和count函數獲得我需要的所有行?基本上我只希望group子句適用於SUM和COUNT函數,如果這樣做有道理的話 - 我希望爲每次拍賣計算獲勝者的數量,但在該拍賣的每個拍賣結果中顯示。
該表的候選鍵是什麼? – JStead
看起來你錯過了表中的一個逗號:''拍賣,很多' –
@eugeney,他實際上錯過了一個'join'關鍵字。 – Johan