SELECT * FROM main LEFT JOIN sub USING(main_id) WHERE sub.user_id=1
main、subテーブルに共通するmain_idはユニークです。
subテーブルのuser_idはユニークではないので、同一値が入っている場合もあります。
やりたいこととしては、最初にsub.user_idにヒットする値を出して、
ヒットしたレコード”以外の”レコードを抽出し、main.idの数を抽出したいです。
どうしたらいいのでしょうか?
MtSQLは4.1.22を使用しています。
サブクエリを使用したやり方でご希望の結果が出ないでしょうか。
SELECT * FROM main WHERE main_id NOT IN (SELECT main_id FROM sub WHERE user_id = 1);
subをJOINする理由が分からないのですが、もし――
subにある 'user_id=1' 以外のレコード数をカウントしたい
――ということであれば、下記のSQL文になるかと。
SELECT COUNT(*) FROM sub WHERE user_id!=1;
カウント(登録数)を取得するのではないです。
まさにこれです!NOT INとすればサブクエリ側でヒットされた結果以外のデータを抽出することが出来ました。
ずっと悩んでいたのですが、こんなに短いコードで出来るとは。。どうもありがとうございました。