sqlite-我如何分组但随机订购?

yyhrrdl8  于 2021-06-24  发布在  Mysql
关注(0)|答案(2)|浏览(325)

假设我有一个表,其中一列是:

Letter  
A
B
B
C
A
A
C

我想问一下能不能退回这些信 in order 但是在一个 random order ,比如首先是所有的c,然后是所有的a,等等。例如:

Letter  
C
C
A
A
A
B
B

所以字母会一起出现,但每次我查询时都是随机排列的。我怎么能做到呢?

ijnw1ujt

ijnw1ujt1#

这里有一种方法:

select t.*
from t join
     (select letter, rand() as rnd
      from t
      group by letter
     ) tt
     on t.letter = tt.letter
order by tt.rnd;

一种更简单的方法是对字母本身进行计算。这里有一种方法:

select t.*
from t
order by rand(ascii(t.letter));

这是规范的,所以在一行中运行两次会返回相同的结果。

gxwragnw

gxwragnw2#

试试这个: For MySQL: ```
SELECT T.Letter
FROM Your_Table T
JOIN (
SELECT *
,RAND()RandumNum
FROM(
SELECT DISTINCT Letter FROM Your_Table
)D
)E ON E.Letter = T.Letter
ORDER BY E.RandumNum

检查一下这把小提琴 `For Sqlite:` ```
CREATE TEMP TABLE tempEmployees AS 
SELECT Letter,RANDOM()RandumNum 
FROM Your_Table
GROUP BY Letter
;

SELECT T.Letter
FROM Your_Table T
JOIN tempEmployees E ON E.Letter = T.Letter
ORDER BY E.RandumNum;

检查一下这把小提琴

相关问题