在mysql中按两个表计数和分组

时间:2016-10-13 15:37:32

标签: mysql

我有两个数据库表,我想通过投票订购我的帖子,我尝试了下面的查询方法,但它不能按我的意愿工作。我的表是这样的:

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 

我错了吗?

2 个答案:

答案 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)

这就是你想要的。请参阅查询:

HAL_NVIC_SetPriority(TIM2_IRQn, 0, 1);
  HAL_NVIC_EnableIRQ(TIM2_IRQn);// Enable interrupt from TIM3 (NVIC level)

输出:

count_output