在MySQL中订购组

时间:2011-08-12 11:27:40

标签: mysql

质疑的权利。 我有根据国家/地区分组的文章。我正在计算使用嵌套查询从另一个表中的每篇文章的投票(如果这很重要)。我想订购所有分组结果,以便获得最多投票的文章,而不是第一个找到的文章。我尝试过HAVING,但看起来它不起作用。

--|------------|----------|-----------|--
  | Article    |  Country |  Votes    |
--|------------|----------|-----------|--
  | Test art   |  1       |  2        |
--|------------|----------|-----------|--
  | Test ar2   |  2       |  3        |
--|------------|----------|-----------|--
  | Test ar3   |  1       |  6        |
--|------------|----------|-----------|--
  | Test ar4   |  1       |  4        |
--|------------|----------|-----------|--
  | Test ar5   |  2       |  9        |
--|------------|----------|-----------|--

因此,当分组时,结果应该是这样的:

--|------------|----------|-----------|--
  | Article    |  Country |  Votes    |
--|------------|----------|-----------|--
  | Test ar3   |  1       |  6        |
--|------------|----------|-----------|--
  | Test ar5   |  2       |  9        |
--|------------|----------|-----------|--

这就是我迄今为止所做的......没有结果;(

SELECT * ,  `sa`.`id` AS aid, (

SELECT SUM(  `svv`.`vote` ) AS smvt
FROM social_votes AS svv
WHERE  `svv`.`article_id` =  `sa`.`id` 
AND UNIX_TIMESTAMP(  `svv`.`date` ) 
BETWEEN  'SOMETIME'
AND  'SOMETIME'
ORDER BY smvt DESC
) AS sumvotes
FROM (
social_articles AS sa
)
JOIN social_countries AS sc ON sa.country = sc.id
GROUP BY sa.country
HAVING sumvotes = MAX( sumvotes ) 
ORDER BY RAND( ) DESC 
LIMIT 4

所以,如果你能伸手,我将感激不尽:)

2 个答案:

答案 0 :(得分:0)

... order by country, votes desc

答案 1 :(得分:0)

用括号括起整个查询,然后在你需要的字段中按顺序选择...我的意思是

SELECT *, alias.field (...your_whole_query...) AS alias ORDER BY alias.field;