好的我正在尝试创建一个执行此操作的mysql查询: 从表中显示3个随机记录然后在第3个记录显示TEXT之后 然后从同一张表中显示相同的3个项目,但显示其他字段(相当于课程项目)。
--ids | titles------
10 | one
20 | two
30 | three
以及给定示例的查询结果:
30 10 20 TEXT three one two
如果有人理解我的要求,请发布您的建议/ asnwer 谢谢你的所有时间:))
答案 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