我刚刚使用了这个查询
SELECT * FROM questions
ORDER BY RAND()
LIMIT 20;
在 mysql 数据库上,我有一个名为 display 的列(以及问题的列),其中的值等于 1。所以现在你可以在查询中看到我限制为 20。我想更改所有的值20 to display=0.我知道这是查询
update test3
set display=0
where id=11;
但这只是设置一行的显示。我该如何为 20 行设置。在此先感谢。
你可以这样做
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,并且您已将第一个查询中的 id 保存在$ids
;
您可以像这样运行第二个查询;
$idstring = implode(',',$ids);
$query = 'update test3 set display=0 where id in ('.$idstring.' )';
$result = mysql_query($query);
使用WHERE
子句搜索子查询
UPDATE test3
SET display = 0
WHERE id IN (
SELECT id FROM questions
ORDER BY RAND()
LIMIT 20)
如果您想在 theSELECT
和 the之间执行某些操作,请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)