如何从表中获取第一行和其他随机行

时间:2011-11-09 21:30:29

标签: php mysql database

我有一个包含10行的表格。我想获得第一个和任意3个随机行。是否可以在一个查询中执行?

谢谢,    ABY

3 个答案:

答案 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;
}