4

私はちょうどこのクエリを使用しました

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

mysql データベースには、値が 1 に等しい display という列 (質問の列と共に) があります。クエリでわかるように、20 に制限しています。 20 to display=0.私はこれがクエリであることを知っています

update test3
set display=0
where id=11;

しかし、これは1行の表示を設定するだけです。どうすれば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;に保存したとします。

次のように 2 番目のクエリを実行できます。

$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)

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)
于 2013-09-30T05:57:20.443 に答える