ホーム > MySQL > ”この中にはありません”という判断

”この中にはありません”という判断

  • 2007 年 8 月 7 日 20:52
  • MySQL

MySQL で例えば account テーブルと order テーブルがあり、order テーブルのすべてのレコードの type カラムのうちどれかと account テーブルの color カラムの値が同じだったら。という判断は ANY を使います。

SELECT `id` FROM `account` WHERE `color` = ANY (SELECT `type` FROM `order` WHERE 1);

こんな感じ。要するに「サブクエリの結果セットのうちどれかひとつ以上と等価」という条件なのですが、これを逆にする「サブクエリの結果セットのどれとも等価であってはならない」という条件を持たせる場合下記のようなクエリを投げると

SELECT `id` FROM `account` WHERE `color` != ANY (SELECT `type` FROM `order` WHERE 1);

失敗します。
これだと「サブクエリの結果セットのうちどれかひとつ以上と等価ではない」という条件になってしまいますよね。
正しくは

SELECT `id` FROM `account` WHERE (`color` = ANY (SELECT `type` FROM `order` WHERE 1)) != 1;

こうですね。

要するにちゃんと考えれば分かる事なのにとちった自分への戒めという意味です。

コメント:0

コメントフォーム
入力した情報を記憶する

トラックバック:0

この記事のトラックバック URL
http://spais.jp/mysql/%e2%80%9d%e3%81%93%e3%81%ae%e4%b8%ad%e3%81%ab%e3%81%af%e3%81%82%e3%82%8a%e3%81%be%e3%81%9b%e3%82%93%e2%80%9d%e3%81%a8%e3%81%84%e3%81%86%e5%88%a4%e6%96%ad/2007-08-07/trackback
トラックバックの送信元リスト
”この中にはありません”という判断 - SPaiS より

ホーム > MySQL > ”この中にはありません”という判断

カテゴリー

ページの上部に戻る