【发布时间】:2017-02-28 01:52:15
【问题描述】:
我有一个很大的问题,我一直在苦苦调整和调整。
SELECT
tastingNotes.userID, tastingNotes.beerID, tastingNotes.noteID,
tastingNotes.note, user.userName,
COALESCE(sum(tasteNoteRate.score),0) as `score`
FROM
tastingNotes
INNER JOIN `user` on tastingNotes.userID = `user`.userID
LEFT JOIN tasteNoteRate on tastingNotes.noteID = tasteNoteRate.noteID
WHERE tastingNotes.beerID = 'C5RJc0'
GROUP BY tastingNotes.noteID
ORDER BY score DESC
LIMIT 0,50;
如果结果还没有分数,我正在使用COALESCE(sum(tasteNoteRate.score),0) 为结果返回零值。
奇怪的行为是,当我应该有两个结果时,它只返回一个分数为零的音符。
当我给一个分数时,他们都出现了,一个是分数,第二个是零。
【问题讨论】:
-
您的查询基本上无效,因为您在使用
GROUP BY时选择了非聚合列。只有noteID和SUM()属于您的SELECT语句。 -
用户能否在同一张纸条中多次评价同一种啤酒?
-
所以这个查询带回了音符的分数。一个用户只能对给定笔记评分一次,但其他用户也可以对该笔记评分。
标签: mysql join left-join inner-join coalesce