我刚使用了这个查询
SELECT * FROM questions
ORDER BY RAND()
LIMIT 20;
在mysql数据库上我有一个名为display的列(以及问题列),其中值等于1.所以现在你可以在查询中看到我限制为20.我想改变值所有20来显示= 0.我知道这是查询
update test3
set display=0
where id=11;
但是这只是设置了一行的显示。我怎么做到20。 提前谢谢。
答案 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)
如果您想在SELECT
和UPDATE
之间执行某些操作,请尝试以下操作:
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)