首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在mysql中选择随机行

在mysql中选择随机行
EN

Stack Overflow用户
提问于 2015-10-12 06:53:19
回答 1查看 52关注 0票数 1

我有一个名为Mydata的表,如下所示

代码语言:javascript
复制
     id        name          type
--------------------------------------------
     1         vinu            1
     2         rinu            2
     3         dilu            1
     4         raju            2
     5         manu            3
     6         saju            3
     7         ragu            3
     8         sonu            1
     9         sam             1
     10        rag             1
--------------------------------------------

我想用交替的type打印记录,例如:

类型为1的第一行

类型为2的第二行

第三行,类型=3

第4行type=1

第5行type=2等等

所需结果如下

代码语言:javascript
复制
     id            name            type
   -----------------------------------------
     1              vinu            1
     2              rinu            2
     5              manu            3
     3              dilu            1
     4              raju            2
     6              saju            3
     8              sonu            1
     7              ragu            3
     9              sam             1
     10             rag             1
 ----------------------------------------------
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-10-12 07:28:54

样本数据:

代码语言:javascript
复制
CREATE TABLE t
    (`id` int, `name` varchar(4), `type` int)
;

INSERT INTO t
    (`id`, `name`, `type`)
VALUES
    (1, 'vinu', 1),
    (2, 'rinu', 2),
    (3, 'dilu', 1),
    (4, 'raju', 2),
    (5, 'manu', 3),
    (6, 'saju', 3),
    (7, 'ragu', 3),
    (8, 'sonu', 1),
    (9, 'sam', 1),
    (10, 'rag', 1)
;

查询:

代码语言:javascript
复制
SELECT id, name, type FROM (

    SELECT
    t.*,
    @rn := IF(@prev_type = type, @rn + 1, 1) AS rownumber,
    @prev_type := type
    FROM
    t
    , (SELECT @rn := 0, @prev_type := NULL) var_init_subquery
    ORDER BY type

) sq
ORDER BY rownumber, type

结果:

代码语言:javascript
复制
| id | name | type |
|----|------|------|
|  1 | vinu |    1 |
|  4 | raju |    2 |
|  5 | manu |    3 |
|  9 |  sam |    1 |
|  2 | rinu |    2 |
|  7 | ragu |    3 |
|  8 | sonu |    1 |
|  6 | saju |    3 |
| 10 |  rag |    1 |
|  3 | dilu |    1 |
  • 看到它在木琴中运行

警告:

当您有大量数据时,不要期望这是性能良好的。它在做全表扫描。

当您对这个变量的工作方式感兴趣时,这里有一个人工录入可以阅读。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33074903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档