【发布时间】:2014-04-16 10:44:23
【问题描述】:
我有一个列名unique,我试图打印随机排序的结果,首先是所有以lead_ 开头的行,然后是所有其余的行。
例如,如果我有这样的行:
abc
lead_ass
dsff
dds
lead_fdg
fds
lead_hhf
我需要先打印随机排序的lead_ass,lead_fdg,lead_nhf,然后再打印其余的,同样随机排序。
【问题讨论】:
标签: php mysql sql sql-order-by
我有一个列名unique,我试图打印随机排序的结果,首先是所有以lead_ 开头的行,然后是所有其余的行。
例如,如果我有这样的行:
abc
lead_ass
dsff
dds
lead_fdg
fds
lead_hhf
我需要先打印随机排序的lead_ass,lead_fdg,lead_nhf,然后再打印其余的,同样随机排序。
【问题讨论】:
标签: php mysql sql sql-order-by
你可以这样做:
order by (col like 'lead_%') desc,
rand()
表达式 (col like 'lead_%') 返回 true(视为 1)或 false(视为 0),因此 desc 将匹配项放在首位。 rand() 只是因为你说你想要随机订购的东西。这将随机排列两组。
【讨论】:
lead_ 也随机排序吗?
'lead_' 开头的组和不以'lead_' 开头的组。
(col like 'lead_%') 将返回 1 如果为真,然后我使用 DESC 首先打印它们。 DESC如果数字相等是随机的?
rand() 将每组中的结果随机化。它是第二个排序键。
你可以使用CASE和LEFT函数
ORDER BY CASE
WHEN LEFT(col,5) ='lead_'
THEN 1 ELSE 2
END
【讨论】: