SQLの書き方について、お知恵を拝借致したくお願い致します。
Oracleで副問合せの結果を選択条件にする場合、WHERE 列名 IN (副問合せの結果)
と書きますが、その結果をワイルドカードとして取り扱う方法は無いでしょうか?
例えば、
CD
--------
101
10101
10102
201
20101
とある時に、
CD
--------
10101
10102
を抽出したい場合、
SELECT CD FROM SOSHIKI WHERE CD IN
(SELECT CD||'%' FROM SOSHIKI WHERE CD LIKE '1__')
というように、SQLを書くことは出来ないでしょうか?
(注)他の選択条件とマージする必要があるので、単純に
SELECT CD FROM SOSHIKI WHERE CD LIKE '1_____';
と書くことは出来ないことが前提です。
No.1ベストアンサー
- 回答日時:
EXISTSでいけませんかね?
SELECT * FROM SOSHIKI as t1 WHERE EXISTS(
SELECT CD||'%' as CD2 FROM SOSHIKI WHERE CD LIKE '1__'
GROUP BY CD HAVING t1.cd LIKE CD2
)
yambejpさん、コメント頂きましてどうも有難うございました。
不勉強なもので、この構文をはっきり理解できてないのですが、機械的に当てはめてみたところ、LIKEの後ろに自分自身で定義した別名は書けないようで、無効な識別子というエラーが出てしまいます。
No.2
- 回答日時:
Oracleだと無理ですかねぇ、mysqlなら行けたんですが。
(mysqlの場合はconcatの文法がちがいますが)
ちなみにgroup byではなくサブクエリでもダメでしょうか?
SELECT * FROM SOSHIKI as t1 WHERE EXISTS(
SELECT 1 FROM(
SELECT CD||'%' as CD2 FROM SOSHIKI WHERE CD LIKE '1__'
) AS t2 WHERE t1.cd LIKE t2.CD2
)
有難うございました。
SELECT * FROM SOSHIKI as t1 WHERE EXISTS(
SELECT CD||'%' as CD2 FROM SOSHIKI WHERE CD LIKE '1__'
AND t1.cd LIKE CD||'%'
)
で通りました。
これで問題ないのか、よく検証してみます。
どうも有難うございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Access(アクセス) アクセス where句を使用して複数条件抽出をするには 2 2022/08/29 13:24
- MySQL 書籍の内容はまともでしょうか? 1 2023/01/22 03:07
- Oracle SQL update方法 2 2022/06/22 14:07
- MySQL SQLです。下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 「昨年の各月の総降 1 2023/07/01 00:32
- MySQL 下記の問合せを行うクエリを、PhpMyAdminで作成して実行せよ。 日本の全市区町村を人口密度が低 1 2023/06/18 19:51
- Access(アクセス) アクセス 有効なフィールド名、または式として認識できませんのエラー 3 2022/08/19 11:53
- MySQL SQLです。こんな感じですか?あってますか? うまくいきません教えてくださいお願いします 1 2023/07/08 15:27
- Oracle sqlで質問です。 aテーブルとbテーブルがあり、下記のsqlで取得したidとnameに一致しないレ 1 2022/04/20 20:34
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP PHPでMysqlにデータがあるかどうか判別したい 1 2023/03/02 11:48
このQ&Aを見た人はこんなQ&Aも見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
SQLでlike検索条件を副問い合わせ結果にしたい
Oracle
-
【SQL】他テーブルに含まれる値に合致する行を抽出
その他(データベース)
-
LIKEの右側にカラムを指定できますか?
MySQL
-
-
4
2つのテーブルをLIKE演算子のように結合させたい
その他(データベース)
-
5
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
6
Oracle 2つのDate型の値の差を「分」で取得したい
その他(データベース)
-
7
ROWNUMでUPDATEをしたいのですが・・・。
Oracle
-
8
テーブルからのselectにおいてデータの有無により結果をわけたい
PostgreSQL
-
9
テーブルタグの中にdivを含めてはダメ?
HTML・CSS
-
10
あるDBから別のDBのテーブルをselectしたい
MySQL
-
11
like演算子内に変数って使えないんですか?
その他(プログラミング・Web制作)
-
12
SQLで条件指定結合をしたいがNULLも表示したい
その他(データベース)
-
13
エクセルのエラーメッセージ「400」って?
Visual Basic(VBA)
-
14
<ACCESS>別テーブルのレコードのテキストデータが中に含まれるレコードを抽出する方法を教えてください
Access(アクセス)
-
15
TO_CHARでのゼロ非表示について
Oracle
-
16
引数によってwhere句を切り替える方法
Oracle
-
17
キーが同じを複数行を1行にまとめるには?
Oracle
-
18
【PL/SQL】FROM区に変数を使う方法
Oracle
-
19
SELECT 文 GROUP での1件目を取得
SQL Server
-
20
重複していないレコードの抽出方法について
MySQL
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLの書き方について
-
主キー(ID)を除いたカラムの...
-
SQL update方法
-
videopad 無料版 アンインストール
-
sqlで質問です。 aテーブルとb...
-
SQLで日付+時間で絞り込みたい
-
Oracleで文字列型の時間を引き...
-
sqlについてです。 サブクエリ...
-
posgreよりoracleを選ぶ理由は?
-
棒読みちゃんが起動できないの...
-
オラクル試験でのクラムメディ...
-
sqlで質問です。 Aテーブルは店...
-
SQLの中上級者へのレベルアップ...
-
SELECTによる表の変換方法を教...
-
開発対象となるアプリケーショ...
-
質問です。 下記のテーブルとデ...
-
Oracleですがsqlで質問です。 ...
-
sqlで質問です。 Aテーブルの登...
-
sqlで質問です。 Aテーブルの情...
-
SQLについて教えて下さい。 主...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
副問合せにLIKE文を使う方法は...
-
RPMのmysqlとmysql-serverの違い
-
MySQL のコマンドが実行出来ま...
-
c言語でMySQLを利用するときの...
-
Mac で mysql コマンドが一部効...
-
MySQLでAutoCommitをfalseにする
-
xamppのMySQLが開かない
-
増設したHDDにmysqlのデータベ...
-
アプリケーションからMySQLへの...
-
select文、asで定義した桁をwhe...
-
ダンプデータのファイル名にア...
-
ストアドファンクションを動作...
-
MySQLサーバーに接続でき...
-
フリーのDBMSについて
-
MySQL ターミナル ログイン
-
mysqlアンインストールについて...
-
mysqlのdatadirの変更について
-
mysqlclusterは無料?ですか
-
borland c++ によるMySQL への...
-
インストール・初期化後、初起...
おすすめ情報
試行錯誤のうえ、
SELECT * FROM SOSHIKI as t1 WHERE EXISTS(
SELECT CD||'%' as CD2 FROM SOSHIKI WHERE CD LIKE '1__'
AND t1.cd LIKE CD||'%'
)
で通りました。
これで問題ないのか、よく検証してみます。
どうも有難うございました。