私は他の誰かのコードに苦労しています。次の (MySQL) ステートメントで WHERE 句は何をしますか?
SELECT * FROM t1, t2 WHERE t1.id = t2.id IN (1,2,3)
私の場合、望ましい結果が得られませんが、元の作成者が意図したことを理解しようとしています。このような WHERE 句の使用例を誰か提供できますか?
この条件は右から始まり、 を評価しt2.id IN (1,2,3)
、結果 (0 または 1) を取得し、それを との結合に使用しt1.id
ます。リストのt2
withid
のすべての行は、 has of one の行に結合されます。の他のすべての行は、ゼロの行と結合されます。ここにsqlfiddle.comの小さなデモがあります: link。IN
t1
id
t2
t1
id
しかし、それが作者の意図であったとは想像しがたいです: 私は、両方の項目がリストにあり、また互いに等しいことをチェックする可能性が高いと思います. 作成者が 2 つのテーブルを結合したかったように見えるため、互いに等しいことが重要です。
結合を行うより新しい方法は、ANSI SQL 構文を使用することです。ANSI SQL でのクエリに相当するものを次に示します。
SELECT * FROM t1 JOIN t2 ON t1.id = t2.id IN (1,2,3)