0

テーブルからランダムなアイテムを表示する際に問題があります。ランダムなアイテムを 1 つだけ表示する方法はありますか?

私はテーブルPRODUCTを持っています

と行

ID タイトル URL_TITLE

$link = "coffee";

テーブルPRODUCTからランダムに1つの製品だけを表示したいのですが、$linkにあるものとは異なります

私が言いたいのは、テーブルからランダムなアイテムが欲しいだけですが、 $link="coffee" でそのランダムな要素を取得するときではありません

ps $link in URL_TITLE 行 :)

4

4 に答える 4

3

これは役立つはずです:

SELECT ID, TITLE, URL_TITLE 
FROM PRODUCT 
WHERE URL_TITLE != "coffee" 
ORDER BY RAND() 
LIMIT 1;

SQL の一部のバージョンでは、!=と書かれていることに注意してください<>

明らかに、すべての行または別のサブセットを選択したい場合は、SELECT *必要なものを使用するだけです。

編集: HamZa のコメントと James の回答によると、大きなテーブルで ORDER BY RAND() を使用することは悪い習慣です。ランダムな ID を生成してそれを選択し、それが不正なものではないことを確認することもできますが、選択できないものがたくさんある場合は、このクエリを何度も呼び出す可能性があります (これは悪いことです)。

于 2013-08-22T21:04:29.863 に答える
1

クエリで rand() を使用するのは理想的ではありません。特に大きなテーブルでは理想的ではありませんが、いつ大きくなるかわからない小さなテーブルでも (つまり、サイトやサービスが期待を超えるなど)、理想的ではありません。

次のように使用できます。

select item from product where item != '$link' ORDER BY rand() LIMIT 1

ただし、一時テーブルなどのより良いものを使用する必要があります。または、1 つのクエリでデータベースからすべての ID を選択し、PHP を使用してそれらすべてからランダムに 1 つを選択し、PHP によって選択された ID を使用してデータベースからデータを取得することもできます。 .

于 2013-08-22T21:08:20.753 に答える