Mysql查询随机顺序(暂停和继续)问题

时间:2011-04-01 22:11:33

标签: mysql

好的我正在尝试创建一个执行此操作的mysql查询: 从表中显示3个随机记录然后在第3个记录显示TEXT之后 然后从同一张表中显示相同的3个项目,但显示其他字段(相当于课程项目)。

例如表信息:

--ids | titles------

10   | one

20   | two

30   | three

以及给定示例的查询结果:

30 10 20  TEXT three one two

如果有人理解我的要求,请发布您的建议/ asnwer 谢谢你的所有时间:))

1 个答案:

答案 0 :(得分:1)

只是为了踢..

select t1.id, t2.id, t3.id, 'TEXT', t1.title, t2.title, t3.title
FROM
(
    select @r := @r + 1 rownum, id
    from (select @r:=0) initvar, (
        select id
        from tbl
        order by rand()
        limit 3
    ) X
) Y
join tbl t1 on Y.rownum=1 and t1.id = Y.id
join tbl t2 on Y.rownum=2 and t2.id = Y.id
join tbl t3 on Y.rownum=3 and t3.id = Y.id

您应该在下面进行查询,并在您使用的任何编程环境(Java / PHP / .Net等)中使用返回的3行执行任何显示处理。

select id, title
from tbl
order by rand()
limit 3

<小时/>

修改

要获取7种不同的 中的数据,您可以使用以下内容。我再次强调这是前端显示代码。我不会在生产系统中使用这样的SQL代码。

select display
from
(
select sorter, rownum,
    case when sorter=3 then title else id end display
from
(
    select @r := @r + 1 rownum, id, title
    from (select @r:=0) initvar,
    (
        select id, title
        from tbl
        order by rand()
        limit 3
    ) X
) Y, (select 1 sorter union all select 3) dup
union all
select 2, 0, 'TEXT'
) Z
order by sorter, rownum

示例输出

7
2
1
TEXT
test 7    << title for id=7
test 2
test 1