就应该得到这个查询不知道,但您也可能会使用
SELECT number
FROM SomeTable
ORDER BY RAND()
LIMIT 5
但是请注意,ORDER BY RAND ()效率很低,因此只适用于处理少量行的情况。但是,如果您要带回大量的行,那么在PHP中执行操作也是低效的。
还有一种更有效的方法可以返回一个随机行,所以如果你有很多行,可能值得高效地检索单行5次并将结果联合在一起(尽管你需要考虑的可能性,随机行可能是重复的
例如(而不是真正与这个幸福): - 。
(SELECT r1.number
FROM SomeTable AS r1
INNER JOIN
(
SELECT RAND() * (MAX(number) - MIN(number)) + MIN(number) AS number
FROM SomeTable
) AS r2
ON r1.number >= r2.number
ORDER BY r1.number ASC
LIMIT 1)
UNION
(SELECT r1.number
FROM SomeTable AS r1
INNER JOIN
(
SELECT RAND() * (MAX(number) - MIN(number)) + MIN(number) AS number
FROM SomeTable
) AS r2
ON r1.number >= r2.number
ORDER BY r1.number ASC
LIMIT 1)
UNION
(SELECT r1.number
FROM SomeTable AS r1
INNER JOIN
(
SELECT RAND() * (MAX(number) - MIN(number)) + MIN(number) AS number
FROM SomeTable
) AS r2
ON r1.number >= r2.number
ORDER BY r1.number ASC
LIMIT 1)
UNION
(SELECT r1.number
FROM SomeTable AS r1
INNER JOIN
(
SELECT RAND() * (MAX(number) - MIN(number)) + MIN(number) AS number
FROM SomeTable
) AS r2
ON r1.number >= r2.number
ORDER BY r1.number ASC
LIMIT 1)
UNION
(SELECT r1.number
FROM SomeTable AS r1
INNER JOIN
(
SELECT RAND() * (MAX(number) - MIN(number)) + MIN(number) AS number
FROM SomeTable
) AS r2
ON r1.number >= r2.number
ORDER BY r1.number ASC
LIMIT 1)
UNION
(SELECT r1.number
FROM SomeTable AS r1
INNER JOIN
(
SELECT RAND() * (MAX(number) - MIN(number)) + MIN(number) AS number
FROM SomeTable
) AS r2
ON r1.number >= r2.number
ORDER BY r1.number ASC
LIMIT 1)
UNION
(SELECT r1.number
FROM SomeTable AS r1
INNER JOIN
(
SELECT RAND() * (MAX(number) - MIN(number)) + MIN(number) AS number
FROM SomeTable
) AS r2
ON r1.number >= r2.number
ORDER BY r1.number ASC
LIMIT 1)
UNION
(SELECT r1.number
FROM SomeTable AS r1
INNER JOIN
(
SELECT RAND() * (MAX(number) - MIN(number)) + MIN(number) AS number
FROM SomeTable
) AS r2
ON r1.number >= r2.number
ORDER BY r1.number ASC
LIMIT 1)
UNION
(SELECT r1.number
FROM SomeTable AS r1
INNER JOIN
(
SELECT RAND() * (MAX(number) - MIN(number)) + MIN(number) AS number
FROM SomeTable
) AS r2
ON r1.number >= r2.number
ORDER BY r1.number ASC
LIMIT 1)
LIMIT 5
SQL小提琴的位置: -
http://sqlfiddle.com/#!2/14caa/4
这是获得10个随机行,然后使用进一步限制5只得到5行。当然,这可能不会得到5行(不太可能,但可能每个联合查询都会返回同一行)的可能性很小。
您如何到达结果'71 64 14 80 82'? –
不,我得到的结果如上面的阵列上显示 – Des