质疑的权利。 我有根据国家/地区分组的文章。我正在计算使用嵌套查询从另一个表中的每篇文章的投票(如果这很重要)。我想订购所有分组结果,以便获得最多投票的文章,而不是第一个找到的文章。我尝试过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
所以,如果你能伸手,我将感激不尽:)
答案 0 :(得分:0)
... order by country, votes desc
答案 1 :(得分:0)
用括号括起整个查询,然后在你需要的字段中按顺序选择...我的意思是
SELECT *, alias.field (...your_whole_query...) AS alias ORDER BY alias.field;