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 A4或A2 A3 A4 A1或A2 A3 A4 A5或A4 A5 A2 A3等
A1 A2 A3 A4
A2 A3 A4 A1
A2 A3 A4 A5
A4 A5 A2 A3
我使用下面的查询,但对我不起作用
SELECT * FROM mytable ORDER BY RAND() ASC limit 0,4
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`