4

我刚刚使用了这个查询

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 行设置。在此先感谢。

4

2 回答 2

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,并且您已将第一个查询中的 id 保存在$ids;

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

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

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

$result = mysql_query($query);
于 2013-09-30T05:57:33.163 回答
1

使用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)
于 2013-09-30T05:57:20.443 回答