- 締切済み
複数の条件での絞り込み検索の仕方
My SQLで複数の条件での絞り込み検索をしたいのです。 TABLEAのSHOHINCDという項目をキーにして、 TABLEBにて上記で抽出したSHOHINCDを LIKE IN で抽出したいのですがどう記述したらよいのでしょうか。 初歩的な質問ではありますが、宜しくお願い致します。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- Siegrune
- ベストアンサー率35% (316/895)
どういう要件ですか? 受け取ったイメージは以下の要件なので無理! tableA SHOHINCD A101 A201 A301 の3件が抽出されると、 tableB SHOHINCD X-A101b A101c A101 XYZ-BA201 XYY-A301 A301xxyz 等がすべて取得できる必要がある。 言い換えると、 SHOHINCD like '%A101%' or SHOHINCD like '%A201%' or SHOHINCD like '%A301%' と、tableAから抽出されたSHOHINCDを含むSHOHINCDを持つtableBのレコードすべて 出力したい、と読み取れました。 Likeの文字列を可変にするのは無理です。 条件が違っているなら、やりようはあるかもしれません。。。 例えば、tableBの2文字目から4文字目がtableAから抽出されたSHOHINCDと一致するレコード とかならできます。
- yambejp
- ベストアンサー率51% (3827/7415)
SQLのかなり基本だと思うのですが、釣りじゃないなら 普通にJOINするだけじゃないの? SELECT * FROM TABLEB AS B INNER JOIN TABLEA AS A ON A.SHOHINCD = B.SHOHINCD
- bin-chan
- ベストアンサー率33% (1403/4213)
MySQLってlike in なんですか?Oracleだと like と inは別なんですが。 tableBのSHOHINCDのうち、tableAのSHOHINCDに存在するものを検索するのであれば select * from tableB where tableB.SHOHINCD in ( select SHOHINCD from tableA ) ; #()でインデントのために全角スペース使ってるので、取り除いてください。
補足
すいません’と’が抜けてました。 LIKEとINを使って抽出ですね。 イメージとしてはこんな感じで抽出できればな。。。と思ってたんですが ----- SELECT * FROM TABLEB WHERE 1=1 AND SHOHINCD LIKE ( SELECT SHOHINCD FROM TABLEA ) -----