前提・実現したいこと
出来る限り少ないステップでデータ取得をしたいと考えています。
MySQLにて特定のカラムから複数の条件が合致するデータを取得したいです。
union句を使用するのかなと思っているのですが、イマイチ理解できておらず質問させていただきました。
下記のようなデータがあり、同じ[Acode]列で [Aname]列が"テストA"と"テストD"どちらも含む場合のデータのみを取得したいです。
Acode | Bcode | Aname |
---|---|---|
001 | 001 | テストA |
001 | 002 | テストB |
001 | 003 | テストC |
001 | 004 | テストD |
001 | 005 | テストE |
002 | 001 | テストA |
002 | 002 | テストB |
002 | 003 | テストC |
002 | 004 | テストE |
003 | 001 | テストA |
003 | 002 | テストD |
003 | 003 | テストG |
004 | 001 | テストH |
… |
取得したいデータ:
Acode | Bcode | Aname |
---|---|---|
001 | 001 | テストA |
001 | 004 | テストD |
003 | 001 | テストA |
003 | 002 | テストD |
ご教示いただけますと幸いです。
※下記だと、片方だけでも含まれているものが抽出されるということは理解してます。
SQL
1select Acode, Bcode, Aname 2from テーブル 3where Aname in ("テストA", "テストD")
※下記のような感じでできないのかなと模索してます。
SQL
1select Acode, Bcode, Aname 2from テーブル 3where Aname = "テストA" 4union 5select Acode, Bcode, Aname 6from テーブル 7where Aname = "テストD"
補足情報(FW/ツールのバージョンなど)
MySQL
union句をどのように使う想定でしょうか。誤っていてもいいので「こんな感じのSQL文で試してみたが、エラーになる/結果が想定と違う」といった旨の記載があれば、いやいやそうじゃなくてこうですよと回答が付きやすいかと思います。
また、テストA だけが含まれる データの取得方法はご存じでしょうか。
同様にその場合のSQL文を提示していただき、「テストAだけであればこういうSQLで取得できるのですが、テストA、テストDどちらかが含まれる場合のSQLがわかりません。」とすると回答を受けやすいかと思います。
これによって、entaro12345さんがどこまでわかっているのかが明確になって、回答もentaro12345さんがわかっている余計な説明をする必要がなくなります。
Crimson_Tideさま
アドバイスありがとうございます。
現在、わかっているSQL等を追記しましたのでご確認いただけますと幸いです。
select Acode, Bcode, Aname
from テーブル
where Aname in ("テストA", "テストD")
これ実行されましたか? これで想定した結果になるように思われますがどうでしょうか。
ただ「"」が「’」のような気がしますが、「"」でも問題ないのか その点についてはわかりかねます。
エラーがでるようなら 「’」で試してみてください。
実行いたしましたが、下記データも抽出されてしまいます。
002 001 テストA
であれば抽出条件が不十分に思われます。
表現がうまくないのでより適切なものにして頂きたいですが、 「同じAcode列(Bcodeが同じ場合も?)で Aname列が"テストA"と "テストD" を含む場合」ということでしょうか
表現が適切でなくて申し訳ございません。
たしかに、あいまいな感じになっております。
「同じAcode列で Aname列が"テストA"と "テストD" を含む場合」が正しい条件になります。
※追記しておきます。
ご対応ありがとうございます。
Acode列のテストAのエントリーは0個若しくは1個という認識であっていますか。
それとも 以下のようなケースはありますか。
001 001 テストA
001 002 テストA
001 003 テストA
001 002 テストD
001 004 テストD
こちらこそご丁寧にご指摘ありがとうございます。
Acode列のテストAのエントリーは0個 or 1個の認識で合っております。
確認の回答ありがとうございます。
既に適切な回答が得られているようで何よりです。
回答3件
あなたの回答
tips
プレビュー