join 与 group by 结合的问题

2024-12-16 12:49:52
推荐回答(4个)
回答1:

select * from cn_match m left join cn_matchvote vote on vote.tid=m.id
order by vote.tid desc
用这个语句试试。
group by 是分组用的,而你的情况用order by 更容易做出来,order by 就是用来排序用,order by 后面加按那个字段排序,desc 是关键字代表降序排列,也就是最大值排在最前面.asc也是关键字代表升序排列。

回答2:

可将右边的评论先通过文章ID求取记录条数

SELECT m.*,vote.VoteCount FROM cn_match m LEFT JOIN
(SELECT COUNT(tid)AS VoteCount FROM cn_matchvote GROUP BY tid) AS vote
ON vote.tid=m.id WHERE m.type=1 AND m.pass=0

回答3:

带我信乐的思路正解.
即: 先统计,后连接.
不过代码有疏忽的地方,
1.子查询漏了tid列
2.最后忘了desc排序

select m.* from cn_match m left join
(select tid,count(*) votes from cn_matchvote group by tid) n
on m.id=n.tid
where m.type=1 and m.pass=0
order by n.votes desc

回答4:

楼上的你好,
我是楼主,我估计你没有明白我的意思,我的意思是想把文章按照最多的评论来排序,,你写的SQL语句好像不能实现。。这个里面可以肯定有一个GROUP BY 和count 函数。