LoginSignup
14
15

More than 5 years have passed since last update.

sqlのwhere in って、複数条件(カラム)を指定できるんですね

Posted at

↑postgresの記事ですが、mysqlでも同様に実行できました。

foo.sql
SELECT *
FROM
test_table
WHERE
(col,co2) IN -- 複数のカラムを指定
  (SELECT  subcol1,subcol2 -- 副問いの戻り値も複数のカラムを指定
   FROM  subtable
   WHERE id > 10 )

知らなかったなんて、お恥ずかしい

※手元にあるmysqlはv.5.1.61ですが、v.4.1から使えるらしい

sqlの仕様として、mysqlのdocでは分かりませんでしたが、sql99から利用可らしい

http://dev.mysql.com/doc/refman/5.1/ja/comparison-operators.html
↑では、分かりませんでしたが、次のurlよれば、sql99から利用できるみたい。

私の知る限り、SQLServer(Accessも)以外のRDBMSでは、
 WHERE
  (カラム1, カラム2) IN
    (SELECT カラムA, カラムB
    FROM サブテーブル
    WHERE 条件
    )
という「行値構成子」とか「行値式」とかいうSQL99からの書き方が可能ですが、SQLServerではこの書き方ができません。そのため、複数のカラムが条件として必要なときには、SQLServerではEXISTSで書くしかありません。
http://d.hatena.ne.jp/Sikushima/20100627/1277616745

14
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
15