在mysql上使用Limit random

时间:2013-09-30 05:53:28

标签: mysql sql database random limit

我刚使用了这个查询

SELECT * FROM questions 
ORDER BY RAND()
LIMIT 20;

在mysql数据库上我有一个名为display的列(以及问题列),其中值等于1.所以现在你可以在查询中看到我限制为20.我想改变值所有20来显示= 0.我知道这是查询

update test3
set display=0
where id=11;

但是这只是设置了一行的显示。我怎么做到20。 提前谢谢。

2 个答案:

答案 0 :(得分:3)

你可以这样做

update test3
set display=0 
where id in (select id from questions order by rand() limit 20);

假设您使用的是php。

$result = msyql_query("select id from questions order by rand() limit 20");

$ids = array();

while($row = msyql_fetch_assoc($result)){
    $ids[] = $row['id'];  
}

根据您的情况,首先执行第一个查询并从第一个查询中保存ID。

假设您使用的是php,并且已在$ids中保存了第一个查询中的ID;

你可以像这样运行第二个查询;

$idstring = implode(',',$ids);

$query = 'update test3 set display=0 where id in ('.$idstring.' )';

$result = mysql_query($query);

答案 1 :(得分:1)

使用WHERE子句搜索子查询

UPDATE test3
SET display = 0
WHERE id IN (
SELECT id FROM questions 
ORDER BY RAND()
LIMIT 20)

如果您想在SELECTUPDATE之间执行某些操作,请尝试以下操作:

CREATE TABLE #Temp (
    division TINYINT
)

INSERT INTO #Temp 
SELECT id FROM questions 
ORDER BY RAND()
LIMIT 20

--SELECT * FROM #Temp

UPDATE test3
SET display = 0
WHERE id IN (
SELECT division FROM #Temp)