开发者

Mysql query random order (pause and continue) question

Okay i am trying to create a mysql query that does this: show 3 random records from table then after the 3th record show TEXT and then show the same 3 items but other field (equaling to the items ofcourse) from same table.

eg table info:

--ids | titles------

10   | one

20   | two

30   | three

and the query results from the given example:

30 10 20  TEXT three one two

if anyone understand what i am asking,post y开发者_JAVA技巧our suggestion/asnwer thanks for your time all :)


Just for kicks..

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

You should really just do the query below, and do whatever display processing using the 3 rows returned, in whatever programming environment you use (Java/PHP/.Net etc).

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


EDIT

To get the data in 7 different rows, you can use the below. I stress again that this is front-end display code. I will not use such SQL code in a production system.

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

Example Output

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

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜