人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

MySQLで、あるテーブル[login]のusernameに載っているか否かをcountで数えるのですが、あるテーブル[nocheck]のusernameに載っている人はカウントしないsql文を作りたいです。
つまりnocheckのテーブルに載っているユーザは特別ユーザで、ここに載っている場合はcountが0を返して欲しいというものです。
元となるsqlは、
select count(*) from login where username='ユーザ名';
となっていますが、これを例えば
select count(*) from login,nocheck where login.username='ユーザ名' and nocheck.username<>'ユーザ名';
だと、nocheckの'ユーザ名'以外の人たちがカウントされてしまいうまくいきません。
こういうときはどう書くものなんでしょうか。

●質問者: stealthinu
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:LOGiN MySQL SELECT SQL いるか
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● dungeon-master
●60ポイント ベストアンサー

not Exists を使います。

http://dev.mysql.com/doc/refman/4.1/ja/exists-and-not-exists-sub...

select count(*) from login where login.username='ユーザ名' and not exists ( select * from nocheck.username='ユーザ名' );

か、

select count(*) from login where login.username='ユーザ名' and not exists ( select * from nocheck.username=login.username );

といったところでしょうか。

◎質問者からの返答

テストしてみました。これで希望通りの動きになります。素早い回答、ありがとうございます。

ただ、このままではちょっとtypoあり動かないので、後から見られた人のために少し訂正しておきますね。

select count(*) from login where login.username='ユーザ名' and not exists ( select * from nocheck where nocheck.username=login.username );


2 ● llusall
●10ポイント

このようなSQLで如何でしょうか?

select count(*)

from login t1

where

t1.username = 'ユーザ名'

not exists (

    select t2.username

    from nocheck t2

    where t2.username = t1.username

   )

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ