gpt4 book ai didi

sql - 带有LEFT JOIN的SQLite AVG()不返回所有行

转载 作者:行者123 更新时间:2023-12-03 18:58:36 25 4
gpt4 key购买 nike

我的评分系统有问题。

如果LEFT JOIN中没有匹配项,则在使用AVG()时,它根本不返回该行。

如果联接没有结果,则返回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中完成了此任务,没有任何问题。

最佳答案

您需要有GROUP BY子句,

SELECT...
FROM...
WHERE...
GROUP BY op_id,
op_img,
op_title,
op_worktime,
op_cookingtime

关于sql - 带有LEFT JOIN的SQLite AVG()不返回所有行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15310115/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com