我有這個MySQL數據庫非常奇怪的問題。奇怪的MySQL行爲與COUNT
爲了簡化查詢,讓我們只想說,我打電話此查詢以獲取配置文件匹配的用戶設置:
SELECT u.*, floor(datediff(now(), u.birth_date)/365) as age
FROM users_wr u
LEFT JOIN cities c ON c.id = u.city_id
WHERE u.id != 1 and c.country_id = 71
HAVING age >= 20 AND age <= 25
此查詢現在返回的3行集(這是正確的)。然而,當我想要得到的行數是這樣的:
SELECT count(*), floor(datediff(now(), u.birth_date)/365) as age
FROM users_wr u
LEFT JOIN cities c ON c.id = u.city_id
WHERE u.id != 1 and c.country_id = 71
HAVING age >= 20 AND age <= 25
LIMIT 1
然後在另一個情況下,它應該返回4,而是它一直返回5,在這種情況下,它應該返回3它返回NULL。
我不知道那是什麼意思。我在sql中不是初學者,這真的很困擾我。
我不能使用group by,因爲那會計算每個年齡一次,可以有很多年齡相同的用戶。 – kudlajz
@kudlajz:你在說什麼?這正是你需要的!你甚至嘗試過嗎?如果這不適合你,那你的問題就不清楚了。請張貼一些示例輸入和輸出來演示您正在尋找的內容。您可能會發現網站http://sqlfiddle.com有用。 –
如果您不使用GROUP BY,您的結果列表中肯定會有一個結果。 –