gpt4 book ai didi

2 组 SQL 查询

转载 作者:行者123 更新时间:2023-11-29 09:21:59 25 4
gpt4 key购买 nike

这是一个使用 MySql 5.0.51 执行没有问题的查询:

SELECT cc_split.idSplit,
count( voteup.vote),
count( votedown.vote)
FROM cc_split
LEFT JOIN cc_split_usager AS voteup ON voteup.idSplit = cc_split.idSplit
AND voteup.vote >0
LEFT JOIN cc_split_usager AS votedown ON votedown.idSplit = cc_split.idSplit
AND votedown.vote <0
WHERE cc_split.isArchived = false
GROUP BY cc_split.idSplit
LIMIT 0, 30

问题在于 COUNT 没有显示我想要的内容。您是否可以看到,它采用 cc_ split_ userer 并应该计算积极的投票数量,另一方面计算消极的投票数量。上面的代码显示了 2 个赞成票和 2 个反对票,而实际上它应该是 2 个赞成票和 1 个反对票。在单个 SQL 查询中获得赞成票和反对票数的技巧是什么。

表格如下所示:

cc_split:
-idSplit
-...
cc_split_usager:
-idSplit
-vote (can be +1 or -1)
-...

有什么提示吗?

最佳答案

尝试:

SELECT s.idSplit, 
count(case when v.vote > 0 then 1 else null end) as VoteUp,
count(case when v.vote < 0 then 1 else null end) as VoteDown
FROM cc_split s
LEFT JOIN cc_split_usager AS v ON v.idSplit = s.idSplit
WHERE s.isArchived = false
GROUP BY s.idSplit
LIMIT 0, 30

关于2 组 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1418128/

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