[前][次][番号順一覧][スレッド一覧]

mysql:4294

From: とみたまさひろ <とみたまさひろ <tommy@xxxxxxxxxx>>
Date: Mon, 10 Sep 2001 22:19:19 +0900
Subject: [mysql 04294] Re: 2テーブル間で不一致のデータを抽出したい!

とみたです。

On Mon, 10 Sep 2001 21:23:20 +0900
moeru@xxxxxxxxxx wrote:

> (1)SELECT DISTINCT user.userid 
>  FROM table1 LEFT JOIN table2 ON table1.userid=table2.userid,user 
>  WHERE table1.userid <> table2.userid
> 
> (2)SELECT DISTINCT user.userid 
>  FROM table1 LEFT JOIN table2 ON table1.userid=table2.userid,user 
>  WHERE table2.userid is null
> 
> (1)のtable1.userid <> table2.userid
> は、「table1でtable2に入っていないuseridを抽出したい。」
> というつもりでこう書きました。
> 
> (1)(2)の違いは、日本語で書くとどういう解釈なんでしょうか?

日本語で書くのはむずかしいですね (^^;

(1) table1.userid と table2.userid が等しいもののうち、table1.userid と
    table2.userid が異なるものを取り出す → 意味なし

(2) table1.userid に等しい table2.userid がないものを取り出す。

とか…。

> 「table1でtable2に入っていないuseridを抽出したい。」
> の場合、(2)が正しい書き方ってのでLEFT JOINの理解がますます難しくなってしまいました。。

そんな難しくないと思いますよ。LEFT JOIN の場合、条件に該当するレコードが
右のテーブルに存在しない場合は、右のテーブルのフィールドは NULL になる
だけなので…。

単に、NULL を <> 演算子で比較するのが SQL 的に間違いだってだけだと思います。

--
とみたまさひろ <tommy@xxxxxxxxxx>
日本MySQLユーザ会 http://www.mysql.gr.jp

[前][次][番号順一覧][スレッド一覧]

      4270 2001-09-03 16:18 ["yasushi fujiwara" <] 2テーブル間で不一致のデータを抽出したい!
      4271 2001-09-03 16:54 ┣[<endo_t@xxxxxxxxxx> ]                                       
      4272 2001-09-03 17:52 ┣[madara <madara@xxxxx]                                       
      4273 2001-09-03 19:39 ┃┗["yasushi fujiwara" <]                                     
      4274 2001-09-03 19:54 ┃ ┣[fuji <fujiyama@xxxxx]                                   
      4277 2001-09-03 21:49 ┃ ┗[<endo_t@xxxxxxxxxx> ]                                   
      4278 2001-09-03 23:02 ┃  ┗["yasushi fujiwara" <]                                 
      4289 2001-09-09 08:15 ┃   ┗[<moeru@xxxxxxxxxx>  ]                               
      4290 2001-09-10 13:08 ┃    ┣[fuji <fujiyama@xxxxx]                             
      4292 2001-09-10 21:23 ┃    ┃┗[<moeru@xxxxxxxxxx>  ]                           
      4293 2001-09-10 22:07 ┃    ┃ ┣[<endo_t@xxxxxxxxxx> ]                         
->    4294 2001-09-10 22:19 ┃    ┃ ┣[とみたまさひろ <tomm]                         
      4295 2001-09-10 22:41 ┃    ┃ ┗[fuji <fujiyama@xxxxx]                         
      4298 2001-09-12 00:23 ┃    ┃  ┗[<moeru@xxxxxxxxxx>  ]                       
      4291 2001-09-10 13:31 ┃    ┗[madara <madara@xxxxx]                             
      4275 2001-09-03 19:54 ┗[Tomohiro 'Tomo-p' KA]