我有这个 sql 查询,它结合了两个查询,对于一个特定问题(名为标题)的特定用户,首先返回它们为负数的分数的计数和总和,然后返回正分数的总和和计数:
SELECT *
FROM (
SELECT title,
count(*) cnt_neg,
sum(score) sum_neg
FROM scores_ofexpert
WHERE user_id = "30"
AND title = "137"
AND score < 0
GROUP BY title
) neg,
(
SELECT count(*) cnt_pos,
sum(score) sum_pos
FROM scores_ofexpert
WHERE user_id = "30"
AND title = "137"
AND score >= 0
GROUP BY title
) pos
问题是这样的:当两个返回值都运行良好时,但是当一个返回 null 时,如果我运行一个返回值,两者都显示为 null,它工作正常。例如,如果一个 id 为 30 的人在 title1 中有 2 个正分,而在 title1 上没有负分,则查询为 neg_count 和 neg_sum 以及 pos_sum 和 pos_count 返回 null。但如果我只运行积极工作的部分,它确实有效......
我尝试了右连接:它仅在第二个查询有结果并尝试左连接时才起作用,并且仅在第一个有结果时才返回值。有更好的方法吗?