mytable
pid name field
=== ==== =====
1 A1 0
2 A2 1
3 A3 1
4 A4 0
5 A5 0
Run Code Online (Sandbox Code Playgroud)
这是我的表结构.这里我想随机选择4行,所以我在查询中使用RAND()mysql函数我的问题是
如何配对行.我的意思是,我想选择pid 2和3总是另一个.我需要按照下面的顺序.我不想打破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
Run Code Online (Sandbox Code Playgroud)
Mik*_*e S 11
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`
Run Code Online (Sandbox Code Playgroud)