0

次の SQL クエリを使用して、2 つのランダムな行を取得します。

entry.sql
SELECT id, userID, img, points, votes 
FROM entry
WHERE rotation = 1
ORDER BY RAND()
LIMIT 2

次に、可能な行をフィルタリングしたいと思います。私はここでこれを行いますrotationが、もっと欲しいです。

次のような2番目と3番目のテーブルがあります。

users.sql    
ID | username

voted.sql
ID | userID | entryID | timestamp

ユーザーがまだ投票していない行のみを取得したい。したがってentryIDsuserfromのすべてを取得voted.sqlし、上記のクエリがそれらを選択しないようにする必要があります。これを行うにはどうすればよいでしょうか?

それとも、簡単にするために別の方法でデータを保存しますalready voted checkか?

4

1 に答える 1

1

これを行うには、次のように結合またはサブクエリを使用します。

SELECT id, user.userID, entry.img, entry.points, entry.votes
FROM entry
WHERE userID NOT IN (SELECT DISTINCT userID 
                     FROM voted
                     WHERE userID = entry.userID);
于 2013-11-12T16:24:56.520 に答える