1

2ページあります。最初のページでは、データベースからランダムな行が選択されて表示されます。その後、フォームが送信されます。2 ページ目では、データベースからランダムな行を選択したいのですが、そのクエリから除外するには、既にランダムに選択された行が必要です。

私はこれNOT INを行う方法を見てきましたが、演算子の順序が間違っているだけかもしれRAND()ませんが、それと組み合わせて動作しないようです。LIMITこれまでのところ、機能していないコードは次のとおりです。

$sql_new = "SELECT * FROM table ORDER BY RAND() LIMIT 1 NOT IN (SELECT * FROM table WHERE id='$id')";
$result_new = $mysqli->query($sql_new);

これは情報を返しません。構文に関するヘルプは素晴らしいでしょう。

4

2 に答える 2

1

これを試して:

$sql_new = "SELECT * FROM table WHERE id != '$id' ORDER BY RAND() LIMIT 1;";
$result_new = $mysqli->query($sql_new);
于 2013-08-15T09:32:45.943 に答える
0

MySQL Docsが言うように

SQL 標準に準拠するために、左側の式が NULL の場合だけでなく、リストに一致するものがなく、リスト内の式の 1 つが NULL の場合にも、IN は NULL を返します。

NOT INキーワードの前に列名を指定する必要があります。このようなもの

SELECT val1 FROM tbl1 WHERE val1 NOT IN (1,2,'a');
于 2013-08-15T09:35:01.467 に答える