【发布时间】:2016-12-22 08:12:02
【问题描述】:
我在mysql中建了一个表,id是int类型,name和password是varchar类型。 执行
select * from test.new_table order by rand(1);
这是因为在为 rand 设置种子之后序列是固定的,我已经知道了。但是如果执行
select * from test.new_table order by 1 and rand(1);
对于这样的结果我不明白。另外,如果按 'xxx' 执行命令,则排列结果。 不太明白,希望大家指点。
【问题讨论】:
-
您是否在同一个会话中执行这两个查询?如果是这样,您应该不会看到结果集的顺序发生变化。
-
他们完全在同一个会话中。但是结果改变了。你可以在mysql中测试它。
-
您想用
and运算符实现什么目标?您的意思是按位进行and还是尝试按第一列然后随机排序?在这种情况下,您应该使用逗号而不是and。 -
@siride,
ORDER BY 1, RAND(1)将首先按主键id列排序,然后如果存在平局则按随机值排序 - 假设id是主键,则永远不会存在. -
@BillKarwin:它也没有意义,但它至少符合 ORDER BY 子句的工作方式。
标签: mysql random sql-order-by