我有一个包含10行的表格。我想获得第一个和任意3个随机行。是否可以在一个查询中执行?
谢谢, ABY
答案 0 :(得分:2)
我会这样做:
SELECT * FROM Foo ORDER BY ID LIMIT 1 --First row
UNION
SELECT * FROM Foo WHERE ID NOT IN (SELECT ID FROM Foo ORDER BY ID LIMIT 1)
ORDER BY RAND() LIMIT 3
答案 1 :(得分:0)
(SELECT * FROM table ORDER BY id ASC LIMIT 1) UNION (SELECT * FROM table ORDER BY RAND() LIMIT 3)
当然,你可能不想选择随机部分的第一行,但你说任何3
答案 2 :(得分:0)
我建议在应用层执行此操作,因为您可以稍后引入缓存。此外,在应用程序中进行随机操作要比在数据库层进行随机操作要快得多。
// Your database stuff
while ($row = $result->fetchRow()) {
$results[] = $row;
}
$firstResult = array_shift($results);
for ($i = 0 ; $i < 3 ; $i++) {
$randomKey = array_rand($results);
$randomResults[] = $results[$randomKey];
}
echo $firstResult;
foreach ($randomResults as $randomResult) {
echo $randomResult;
}