一尘不染

如何在MySQL中选择随机行?

mysql

mytable

pid name field
=== ==== =====
1    A1   0
2    A2   1
3    A3   1
4    A4   0   
5    A5   0

这是我的表结构。在这里我想随机选择4行,所以我在查询中使用RAND()mysql函数,我的问题是

如何配对到行。我的意思是,我想始终选择pid 2和3。我需要按以下顺序。 我不想打破对A2 A3

A1 A2 A3 A4A2 A3 A4 A1A2 A3 A4 A5A4 A5 A2 A3

我使用下面的查询,但对我不起作用

SELECT * FROM mytable ORDER BY RAND() ASC limit 0,4

阅读 341

收藏
2020-05-17

共1个答案

一尘不染

turbod与他的答案很接近,他只是随机排序,当您似乎想要按pid排序时,在获得所需的随机行以及与A2和A3有关的行之后:

(
    SELECT *
    FROM `mytable`
    WHERE 
        name ='A2' OR 
        name ='A3'
    LIMIT 2
)
UNION
(
    SELECT DISTINCT *
    FROM `mytable`
    WHERE 
        name !='A2' OR 
        name !='A3'
    ORDER BY RAND( ) LIMIT 2
) 
ORDER BY `pid`
2020-05-17