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]