0

このクエリの目標は、コンテストへのエントリの mysql データベースから 10 人の勝者を選ぶことです。列は「product_id」、「uid」、および「winner」です。

勝者は常に 0 (今のところ、勝者は選ばれていないため)、uid は一意のインデックス (1 人につき 1 つのエントリ)、product_id は 10 の異なる製品 ID の 1 つです。コンテストに参加するために、ユーザーはログインし、獲得したい 10 個の製品のいずれかを選択しました。

データベースには 1000 行あり、10 個の製品 ID ごとにそれぞれ約 100 行あります。

10 個の異なる製品 ID ごとに 1 つのランダムなエントリを選択する 1 つのクエリが必要です。以下のクエリは 10 個のランダムなエントリを選択していますが、一部の製品 ID は同じです。

SELECT DISTINCT product_id, uid FROM database.table WHERE winner = 0 ORDER BY RAND( ) LIMIT 0 , 10

このクエリを改善して、必要な方法で機能させるにはどうすればよいですか?

4

1 に答える 1

0
SELECT product_id, uid
FROM (  SELECT product_id, uid
        FROM database.table
        WHERE winner = 0
        ORDER BY RAND()) AS h
GROUP BY product_id

GROUP BYxあなたが話しているこのコラムで、これを解決するはずです。実際にはDISTINCT、より正確なGROUP BY.

于 2013-01-10T15:21:29.017 に答える