前提・実現したいこと
以下の図のように、二つのテーブル(table_joinとlink_table)から、link_tableにある
複数カラムを使って複数の条件(たとえばfile_name, sheet_nameがそれぞれ特定の値)を満たす
物のみをtable_joinから取り出したいです。
追記:Unique、Primaryは、idにしか設定していません。
お聞きしたいことは下記2点です。
①「該当のソースコード」に記載の内容で書いたところ、エラーは出なかったのですが、
クエリとして上記のユースケースとして問題はないでしょうか。
(上の図ではすごく少ないデータのようなので問題なさそうに見えますが、実データは数十万件の
データであり、想定通りのクエリになっているかの確認が難しいです。)
②①では、table_joinを検索するキーを「id」で行っているのですが、「year」「tag」で行った場合(a.id, c.idを、(a.year and a.tag), (c.year and c.tag)に書き換えた)、検索される件数が変わってしまいます。紐づけ対象として行っているだけなので、結果は等価と思ったのですが、等価にならない理由として想定されるものはどういうことになりますでしょうか。
該当のソースコード
sql
1select a.id, a.a_data1, a.b_data1 from table_join a 2where 3 a.id 4in 5 (select c.id from link_table c where c.file_name = 'ほげほげ.xlsx' 6and 7 c.sheet_name = 'a') 8UNION 9 select a.id, a.a_data1, a.b_data1 10from 11 table_join a 12where 13 a.year >= 2015 14
試したこと
sqlに関して、やりたいことを検索し、MYSQL_workbenchなどでデバッグしてみた。
環境
MySQL workbench 8.0.19
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/30 08:59
2021/05/30 16:07
2021/05/30 16:15 編集
2021/05/30 16:20 編集
2021/05/30 16:21
2021/05/30 16:24
2021/05/30 16:56 編集
2021/05/30 17:01
2021/05/30 17:04