こんにちはSQL講習です
オブジェクティブグループの@Yukidarusanです!
弊社では月に1回、社内講習会を開いておりまして自分はSQL講習を担当しております。
今回は初回でご説明する「in句」について、現場で便利だなと思った内容について記事にさせていただきます!
in句の基本的な使い方
in句は基本的には、1つのカラムに対して複数の条件を指定する際に使用するものです。
例えば…
CREATE TABLE orders (
order_id INT,
customer_id INT,
product_id INT,
quantity INT
);
テーブルがあるとしたら、基本の書き方はこうなります。
SELECT * FROM orders WHERE order_id IN(1,2);
では、customer_id,product_idを条件にしたいという場合は
どう書けば良いか?
よくやってしまうこと、、、
単純に考えると…こんな感じで書いてしまいがち。
SELECT * FROM orders
WHERE customer_id, product_id IN ((1, 100), (2, 200));
これはエラーになります。
in句は基本的に「1列」に対してしか使えないので、複数列を並べてもエラーとなります。
正しい書き方
じゃあどうやって書くんや?
複数列を使う場合は、カラムをカッコでくくる が正解です。
SELECT * FEOM orders
WHERE (customer_id,product_id) IN ((1,100),(2,200));
こうすると複数カラムを指定して、in句の記載をすることができます!
in句の要素数に制限ってある?
さてここまでくると、in句で指定するのに要素数に制限ってあるの?
というところですが、データベースエンジン毎に違いがありました。
- Oracle
1000個と明確に個数制限あり。1000個以上の場合エラーが発生する。 - MySQL/SQL Server/PosgreSQL
特に明確な制限はなし。
意外とOracleに制限がありましたね…
パフォーマンスに影響が出るなどの理由がありそうですね。
in句やはり便利!
in句はやはり、記載を簡略化することができ大変便利です。
どのように使うかはあなた次第になりますので、
積極的に使っていきましょう🎶
参考:
オブジェクティブグループでは X の投稿も平日毎日行っています!
IT 関連の小ネタや便利技から、日常のアニメ・ゲーム布教なども幅広く投稿してるので、
ご興味のある方は是非フォロー・いいねをお願いします。