a表
aid aname
1 yxy.com
2 itokit.com
3 hgxo.com.cnb表
bid aid bname
1 1 www
2 1 bbs
3 2 www
4 2 bbs
5 2 agent
6 3 bbs
7 3 www
8 3 hi
9 3 blog问:我想用一条SQL语句来查询a,b表,我想排序a表中的记录,是以b表中记录数出现的总数来排列。例如:a表中的“3 hgxo.com.cn”在b表中出现次数最多,所以会排第一位。而“2 itokit.com”在b表中出现次于3,所以会排列在3以后。所以最后记录应该按这样排列:
3 hgxo.com.cn
2 itokit.com
1 yxy.com可以实现吗?
aid aname
1 yxy.com
2 itokit.com
3 hgxo.com.cnb表
bid aid bname
1 1 www
2 1 bbs
3 2 www
4 2 bbs
5 2 agent
6 3 bbs
7 3 www
8 3 hi
9 3 blog问:我想用一条SQL语句来查询a,b表,我想排序a表中的记录,是以b表中记录数出现的总数来排列。例如:a表中的“3 hgxo.com.cn”在b表中出现次数最多,所以会排第一位。而“2 itokit.com”在b表中出现次于3,所以会排列在3以后。所以最后记录应该按这样排列:
3 hgxo.com.cn
2 itokit.com
1 yxy.com可以实现吗?
LEFT JOIN B ON A.AID=B.AID
GROUP BY A.AID,A.NAME
ORDER BY COUNT(B.ID)
呵。谢谢。这二个表上都建了索引的。应该是我远程操作的原因吧。呵。谢谢。我对内、外、左、右联接不是很懂。懂,今天学到了。谢谢!不过有个疑问哦!我a表:842条记录,b表:5779条记录,我用LEFT JOIN:SELECT A.AID,A.NAME FROM A
LEFT JOIN B ON A.AID=B.AID
查询出来的的却是:4548条记录,我用RIGHT JOIN:SELECT A.AID,A.NAME FROM A
RIGHTJOIN B ON A.AID=B.AID
查询出来的的却是:5779条记录, 这个我懂了。是以右表记录来取。但是为什么我用LEFT JOIN时却有4548条记录了,不是LEFT JOIN是以取出左表的记录吗?我的a表却只有842条记录啊?为啥啊?呵。谢谢!我用INNER JOIN:取出的记录为4201条。这是按什么来取的呢?
GROUP BY将同类的合并为一条记录