我有一张桌子,看起来像:
ID | TICKET PRICE | VIP
----------------------------
1 | $45.00 | 1
2 | $40.00 | 1
3 | $20.00 | 0
4 | $65.00 | 0
5 | $45.00 | 1
我需要查询该表以按价格对所有行进行排序,但始终显示一个随机行,其顶部具有VIP = 1。因此,例如,查询应返回:
ID | TICKET PRICE | VIP
----------------------------
2 | $40.00 | 1
3 | $20.00 | 0
1 | $45.00 | 1
5 | $45.00 | 1
4 | $65.00 | 0
当您刷新页面时,行ID 5可能会成为第一行,因为它的VIP = 1。
我目前有我的查询,看起来像:
(SELECT * FROM tickets WHERE VIP=1 ORDER BY rand() LIMIT 1)
UNION
(SELECT * FROM tickets WHERE VIP=0 ORDER BY ticket_price ASC)
这样做的问题是,它将仅显示一个VIP行。我将如何正确查询这些数据?
使用order by
。这是一种方法:
select t.*
from (select t.*, (@rn := @rn + 1) as seqnum
from tickets t cross join
(select @rn := 0) params
order by vip desc, rand()
) t
order by (seqnum = 1) desc, price asc;
这使用子查询来标识要保留在顶部的一行。然后,它将这些信息用于外部查询中的排序。
如果您的行具有唯一标识符,则还可以执行以下操作:
select t.*
from tickets t cross join
(select id from tickets where vip = 1 order by rand() limit 1) as t1
order by (t.id = t1.id) desc, price asc;
问题内容: 我正在使用这个简单的查询来对ms-access数据库使用随机排序: 当我使用Microsoft Access 2010测试它时,它工作正常 但是,当我使用经典asp调用此查询时,随机排序不起作用。 这是我的代码: 问题答案: 您只需要对随机生成器“加盐”即可:
本文向大家介绍MySQL查询显示多列的排名?,包括了MySQL查询显示多列的排名?的使用技巧和注意事项,需要的朋友参考一下 为此,请使用FIND_IN_SET()方法。让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出- 以下是显示多列等级的查询- 这将产生以下输出,显示基于标记和年龄的排名-
问题内容: 我希望将一列附加到我的表中,该列将是从顺序列表=到行数的随机数。 因此,如果我的表有 999行 ,则 数字1到999将被随机且唯一地分配 。 现在,我想到可以添加一个虚拟的TempRandomColumn = Rand(),然后对其进行排序,然后使用PHP依次添加数字。但这意味着999条MySQL语句。 有没有办法使用单个MySQL语句来做到这一点? 感谢您的指导。 问题答案:
我试图显示一个随机记录从我的表,但没有运气,这是我一直以来。这是用PHP编写的 想知道这是否是一个明显的错误吗?我已经连接到数据库了。 JB的
问题内容: 是否有任何查询/方式来显示 所有 服务器上执行的最后一个查询? 问题答案: 对于那些拥有MySQL> = 5.1.12的用户,可以在运行时全局控制此选项: 执行 执行 看看桌子 如果您希望输出到文件而不是表: 默认值 。 我更喜欢这种方法来编辑.cnf文件,因为: 您没有编辑文件,并可能永久打开日志记录 您不会在文件系统中四处寻找查询日志-甚至更糟的是,由于需要完美的目的地而分心。 您
本文向大家介绍如何从MySQL表显示3个随机值?,包括了如何从MySQL表显示3个随机值?的使用技巧和注意事项,需要的朋友参考一下 使用随机的,而LIMIT 3的值的数量,即在这里3 - 让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出- 以下是查询以显示MySQL表中的3个随机值- 这将产生以下输出-