質問はこれに似ていますその行に関連するアイテムが別のテーブルに存在するかどうかのフラグを含む一時的な列を返すMySQLクエリを作成する方法
どの行が存在するかをより具体的にする必要があることを除いて
'competitions' と 'competition_entries' の 2 つのテーブルがあります。
大会:
ID | NAME | TYPE
--------------------------------
1 | Example | example type
2 | Another | example type
コンペティションエントリー
ID | USERID | COMPETITIONID
---------------------------------
1 | 100 | 1
2 | 110 | 1
3 | 110 | 2
4 | 120 | 1
コンテストを選択したいのですが、ユーザーがコンテストに参加したかどうかを指定する列を追加します。これは私の現在のSELECTステートメントです
SELECT
c.[ID],
c.[NAME],
c.[TYPE],
(CASE
WHEN e.ID IS NOT NULL AND e.USERID = @userid THEN 1
ELSE 0
END
) AS 'ENTERED'
FROM competitions AS c
LEFT OUTER JOIN competition_entries AS e
ON e.COMPETITIONID = c.ID
@userid
パラメータを設定することによる私の望ましい結果セット110
はこれです
ID | NAME | TYPE | ENTERED
-------------------------------------
1 | Example | example type | 1
2 | Another | example type | 1
しかし、代わりに私はこれを得る
ID | NAME | TYPE | ENTERED
-------------------------------------
1 | Example | example type | 0
1 | Example | example type | 1
1 | Example | example type | 0
2 | Another | example type | 1
すべてのユーザー ID のエントリをカウントしているため