【问题标题】:MySQL randomize selection query by 1 filedMySQL按1个字段随机选择查询
【发布时间】:2014-11-21 01:42:14
【问题描述】:

我有表my_table

id  type  info
1    1    car
2    1    bicycle
3    1    train
4    2    ketchup
5    2    mustard
6    2    soda
7    3    flower
8    3    tree
9    3    grass

我需要进行选择查询,该查询将按类型对数据进行排序,以便结果像

type info
1    car
2    ketchup
3    flower

1    bicycle
2    mustard
3    tree

1    train
2    soda
3    grass

现在

SELECT * from my_table ORDER BY type ASC

按类型 111 222 333 订购,我需要类型 123 123 123。

【问题讨论】:

    标签: mysql sql-order-by


    【解决方案1】:

    MySQL 没有窗口函数,所以这比在其他数据库中更尴尬。

    SELECT type, info
    FROM (
        SELECT @rank := IF(type=@type, @rank+1, 1) AS rank, @type:=type AS type, info
        FROM (SELECT @rank:=0, @type:=null) _init, my_table
        ORDER BY type, id
    ) t
    ORDER BY rank, type;
    

    SQL Fiddle

    【讨论】:

    • Kewl 确实有效。希望它更容易,但我可以忍受这个。谢谢。
    • 还有一件事,我不明白那个字符“t”是什么意思?
    • 任何派生表子查询都需要一个表别名。
    猜你喜欢
    • 1970-01-01
    • 2018-10-04
    • 2013-04-25
    • 1970-01-01
    • 2017-09-17
    • 2014-03-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多