Ransford
V2EX  ›  问与答

sql 语句问题,按某列值的记录个数多少 对记录排序,请点进来看详细描述。求助啊~~

  •  
  •   Ransford · Jun 20, 2014 · 3063 views
    This topic created in 4437 days ago, the information mentioned may be changed or developed.
    表:
    id    order
    1     1
    2     1
    3     2
    4     2
    5     2
    6     3

    我想得到:
    id      order
    3     2
    4     2
    5     2
    1     1
    2     1
    6     3

    就是order值多的那组记录在前 降序
    这个sql怎么写啊~~~我用的是mysql.表名为help
    9 replies    2014-06-21 19:16:42 +08:00
    andyhu
        1
    andyhu  
       Jun 20, 2014
    select * from help as h order by (select count(*) from help where help.order=h.order) desc
    andyhu
        2
    andyhu  
       Jun 20, 2014
    order字段记得做索引
    andyhu
        3
    andyhu  
       Jun 20, 2014
    不过感觉需求上有点不太对劲,楼主的需求应该用group by可以搞定的,不一定非要顺序列出所有的id,换group by后性能应该有所提升
    yangqi
        4
    yangqi  
       Jun 20, 2014
    @andyhu 这完全是无法运行的语句。。。逻辑上也不对

    这个需求和表的设计对不上,所以语句写出来很别扭,效率也不会高的
    andyhu
        5
    andyhu  
       Jun 20, 2014
    @yangqi 可以运行的,试试就知道了。效率低倒是真的,一般不会这么写

    CREATE TABLE IF NOT EXISTS `help` (
    `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
    `order` int(10) unsigned DEFAULT NULL,
    PRIMARY KEY (`id`)
    ) ENGINE=InnoDB;

    INSERT INTO `help` (`id`, `order`) VALUES
    (1, 2),
    (2, 2),
    (3, 2),
    (4, 1),
    (5, 1),
    (6, 3);
    smblog
        6
    smblog  
       Jun 21, 2014
    select id,order from (select count(*) as OrderC,id from help group by id) tt order by tt.OrderC desc
    smblog
        7
    smblog  
       Jun 21, 2014
    写错了。。不过大概就是这样的思路。。
    Ransford
        8
    Ransford  
    OP
       Jun 21, 2014
    @smblog
    @andyhu
    多谢二位~~我昨天是这个思路解决的,用的jion
    select * from `wage_month_detail_info` as A join
    (SELECT perType,count(perType) as c FROM `wage_month_detail_info` group by perType) as B on A.perType=B.perType
    order by B.c desc;
    Ransford
        9
    Ransford  
    OP
       Jun 21, 2014
    @smblog
    @andyhu
    perType就是例子中的order
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1134 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 18:11 · PVG 02:11 · LAX 11:11 · JFK 14:11
    ♥ Do have faith in what you're doing.