我有两个数据库表,我想通过投票订购我的帖子,我尝试了下面的查询方法,但它不能按我的意愿工作。我的表是这样的:
posts
postID Title Desc
10
11
12
votes
votesid postvote value
1 10 0
2 10 1
3 10 1
4 12 1
我想要这样的查询(postvotes有PostID,当人们投票时),如果值等于1计数的postvote列数。
我想要这个输出
10后有2票 第11条有0票 12号帖子有1票
我试过这段代码但没有工作
SELECT i.postID, i.Title, i.Desc, r.postvote, COUNT(r.postvote) AS mediaCnt
FROM posts i
LEFT JOIN votes r ON i.postID = r.postvote
GROUP BY i.postID
ORDER BY mediaCnt DESC
我错了吗?
答案 0 :(得分:1)
你唯一可以选择的是你在group by下使用的列,或者像count sum min max这样的函数。因此,尝试使用已包含所需列的子选择,然后执行左连接。
SELECT
i.postID, i.Title, i.Desc, r.postvote, COUNT(r.postvote) AS mediaCnt
FROM posts i
LEFT JOIN (SELECT r.postvote, COUNT(r.postvote) AS mediaCnt from votes r GROUP BY r.postvote) AS r
ON i.postID = r.postvote
ORDER BY mediaCnt DESC
答案 1 :(得分:0)