V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
Ransford
V2EX  ›  问与答

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

  •  
  •   Ransford · 2014-06-20 20:43:27 +08:00 · 2568 次点击
    这是一个创建于 3801 天前的主题,其中的信息可能已经有所发展或是发生改变。
    表:
    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 条回复    2014-06-21 19:16:42 +08:00
    andyhu
        1
    andyhu  
       2014-06-20 21:50:43 +08:00
    select * from help as h order by (select count(*) from help where help.order=h.order) desc
    andyhu
        2
    andyhu  
       2014-06-20 21:51:32 +08:00
    order字段记得做索引
    andyhu
        3
    andyhu  
       2014-06-20 21:59:00 +08:00
    不过感觉需求上有点不太对劲,楼主的需求应该用group by可以搞定的,不一定非要顺序列出所有的id,换group by后性能应该有所提升
    yangqi
        4
    yangqi  
       2014-06-20 23:23:08 +08:00
    @andyhu 这完全是无法运行的语句。。。逻辑上也不对

    这个需求和表的设计对不上,所以语句写出来很别扭,效率也不会高的
    andyhu
        5
    andyhu  
       2014-06-20 23:49:00 +08:00
    @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  
       2014-06-21 01:02:09 +08:00
    select id,order from (select count(*) as OrderC,id from help group by id) tt order by tt.OrderC desc
    smblog
        7
    smblog  
       2014-06-21 01:06:46 +08:00
    写错了。。不过大概就是这样的思路。。
    Ransford
        8
    Ransford  
    OP
       2014-06-21 19:15:30 +08:00
    @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
       2014-06-21 19:16:42 +08:00
    @smblog
    @andyhu
    perType就是例子中的order
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2634 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 19ms · UTC 11:04 · PVG 19:04 · LAX 03:04 · JFK 06:04
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.