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

MySQLのSQL文の書き方で質問です。

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を使用しています。

●質問者: kt26
●カテゴリ:ウェブ制作
✍キーワード:MySQL SELECT SQL sub ユニーク
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● Mook
●100ポイント

サブクエリを使用したやり方でご希望の結果が出ないでしょうか。

SELECT * FROM main WHERE main_id NOT IN (SELECT main_id FROM sub WHERE user_id = 1);

http://dev.mysql.com/doc/refman/4.1/ja/subqueries.html

◎質問者からの返答

まさにこれです!NOT INとすればサブクエリ側でヒットされた結果以外のデータを抽出することが出来ました。


ずっと悩んでいたのですが、こんなに短いコードで出来るとは。。どうもありがとうございました。


2 ● pahoo
●5ポイント

subをJOINする理由が分からないのですが、もし――

subにある 'user_id=1' 以外のレコード数をカウントしたい

――ということであれば、下記のSQL文になるかと。

SELECT COUNT(*) FROM sub WHERE user_id!=1;

◎質問者からの返答

カウント(登録数)を取得するのではないです。

関連質問


●質問をもっと探す●



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