gpt4 book ai didi

sql - 在多行中显示值 0 的 COUNT(*) 列

转载 作者:行者123 更新时间:2023-11-29 13:03:11 26 4
gpt4 key购买 nike

我有一个表内容

内容(id、contentText、contentDate、idUser → 用户、contentType)

和一个表格VoteQuestion

投票问题(idUser → 用户,idQuestion → 内容,isUp)

例如,我想选择前 30 个最近的问题。

SELECT * 
FROM "Content"
WHERE "type" = 'QUESTION'
ORDER BY "contentDate"
LIMIT 30

但是,我想将包含与此问题相关的信息的另一列连接到此,因此我不需要为返回的每个问题再次查询数据库。

例如,我想计算每个问题的票数,并在同一行中返回所有票数。

例子:

| id | contentText | contentDate | idUser | contentType | votes |
-----------------------------------------------------------------
| 2 | 'abc' | '2013-03-25'| 192 | 'QUESTION' | 10 |

我尝试了以下查询:

WITH question AS
(SELECT *
FROM "Content"
WHERE "type" = 'QUESTION'
ORDER BY "contentDate"
LIMIT 30
)

SELECT COUNT("VoteQuestion"."idUser")
FROM "VoteQuestion", question
WHERE "idQuestion" = question."id"
GROUP BY question."id";

但这不会返回投票数 = 0 的问题(只返回 16 个问题,而不是 30 个)。如何解决?

那么,我怎样才能连接两个表呢?以及如何在查询中减去 isUp 为真且 isUp 为假的选票?

最佳答案

您可以选择投票数:

SELECT Content.* , 
(
SELECT COUNT(*)
FROM VoteQuestion
WHERE idQuestion = Content.id
) as votes
FROM Content
WHERE type = 'QUESTION'
ORDER BY contentDate
LIMIT 30

关于sql - 在多行中显示值 0 的 COUNT(*) 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22867092/

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