end0tknr's kipple - 新web写経開発

http://d.hatena.ne.jp/end0tknr/ から移転しました

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

http://blog.fusic.co.jp/archives/1765
↑postgresの記事ですが、mysqlでも同様に実行できました。

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から利用できるみたい。

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

この方...SQL詳しすぎ