- PR -

MySQL あるテーブルに含まれないデータ一覧

1
投稿者投稿内容
taloo
会議室デビュー日: 2006/03/20
投稿数: 8
お住まい・勤務地: そうだ○○に行こう
投稿日時: 2006-09-29 15:32
MySQLで動かしています。

TABLE_A(
ID int primary key,
NAME text);

TABLE_B(
ID int,
KEY int);

TABLE_Aから、TABLE_Bに含まれないデータ一覧を取り出すため、SQLを以下のようにしました。

SELECT * FROM TABLE_A WHERE TABLE_A.ID NOT IN (SELECT DISTINCT ID FROM TABLE_B ORDER BY ID) ORDER BY TABLE_A.ID LIMIT 0,10;

テスト環境のMySQL4.1.14では取得出来ていますが、
ホスティングサービスのサーバー、MySQL4.0.26ではSELECT DISTINCT〜の部分がシンタックスエラーになってしまいますが、
MySQL4.0.xでは複問い合わせはできないのでしょうか?(3.2.xでもエラーになるようですが)
(NOT IN('0','1','2')などの書き方なら、エラーになりませんでした)
別の書き方はないものでしょうか。

または、
WHERE TABLE_A.ID IN (SELECT〜)
であれば、
WHERE TABLE_A.ID=TABLE_B.ID
と書き換えることが出来ますが、NOT INの場合はどのようにすればいいのでしょうか。
117
ベテラン
会議室デビュー日: 2005/05/09
投稿数: 94
お住まい・勤務地: 大阪府
投稿日時: 2006-09-29 15:39
MySQLのサブクエリー対応は4.1以降なので,4.0系では使えません.

TABLE_AとTABLE_Bを結合してみたらどうでしょう?
LEFT JOINでTABLE_Bの列がNULLの行を抽出すればよさげ
_________________
# Future Is On Fire !
ぷさいくろう
ぬし
会議室デビュー日: 2006/08/30
投稿数: 1034
投稿日時: 2006-09-29 15:42
外部結合
taloo
会議室デビュー日: 2006/03/20
投稿数: 8
お住まい・勤務地: そうだ○○に行こう
投稿日時: 2006-09-29 16:14
素早い回答ありがとうございます。
やはりそうでしたか。
引用:

TABLE_AとTABLE_Bを結合してみたらどうでしょう?
LEFT JOINでTABLE_Bの列がNULLの行を抽出すればよさげ


この方法を使わせて頂きます。
1

スキルアップ/キャリアアップ(JOB@IT)