我的评级系统存在问题。
当LEFT JOIN
中没有匹配项时,当使用AVG()
时,dosnt会返回该行。
如果连接中没有结果,则返回NULL。
SELECT op_id,
...,
rating_stars
但这会删除该行。
SELECT op_id,
...,
AVG(rating_stars)
这是我的最后一次尝试:
SELECT op_id,
op_img,
op_title,
op_worktime,
op_cookingtime,
CASE rating_stars WHEN null THEN 0 ELSE AVG(rating_stars) END
FROM
opskrifter
LEFT JOIN
rating
ON
rating.fk_op_id = opskrifter.op_id
WHERE
fk_type_id=1
ORDER BY
op_id DESC
我需要所有结果,如果它还没有评级,它应该像这样返回0:
ID | RATING
--- 1 --- | --- 0 ---
--- 2 --- | --- 4 ---
--- 3 --- | --- 0 ---
但是上面的SQL返回了这个:
ID | RATING
--- 2 --- | --- 4 ---
我很确定我已经在MySQL中完成了这项工作,没有任何问题。
答案 0 :(得分:2)
您需要GROUP BY
子句,
SELECT...
FROM...
WHERE...
GROUP BY op_id,
op_img,
op_title,
op_worktime,
op_cookingtime