質問とクイズの 2 つのテーブルがあります。
クイズは質問のコレクションです。
クイズの表は次のようになります。
QuizdId | QuestionId (NVARCHAR50)
1 | 1,2,3,4,5
2 | 6,7,8,9
質問テーブルの構造は関係ありません。その主キーは ID (整数) です
特定の質問 ID に対して、すべての質問データを選択したい
この SQL は機能しません (構文エラーが発生します)
SELECT qs.* FROM Questions AS qs
INNER JOIN Quiz AS qz on qs.ID IN (qz.QuestionIds)
WHERE qz.QuizId = 2;
SQL エラー: #1064 - SQL 構文にエラーがあります。'qz.QuestionIds where qz.QuizId = 2 の近くで使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。
以下の SQL では、期待した結果が得られません。ID 6 の質問は 1 つだけです。その理由は、QuestionIds (Quiz テーブル内) が nvarchar フィールドであり、ID (質問テーブル内) が整数であるためだと思います。
SELECT * FROM Questions WHERE ID IN (SELECT QuestionIds FROM Quiz WHERE QuizId = 2)
何をすればよいでしょうか ?
これを SQL / プロシージャ / ルーチン経由で抽出したい。