• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MYSQLの差集合について)

MYSQLの差集合について

nora1962の回答

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1

現時点ではありません。

mellow91
質問者

お礼

ご回答ありがとうございます!

関連するQ&A

  • 差集合について

    MYSQL5.5について質問です。 Table1.idからTable2.idを引いて差集合を得たいとと思います。 例えば、 Table1.id 001 002 003 004 Tbale2.id 002 003 004 とあれば、最終的に欲しい結果は 001 のみです。 SQLを書くと下記のようなSQLになると思います。 mysql> SELECT table1.* FROM table1 -> LEFT JOIN table2 ON table1.id=table2.id -> WHERE table2.id IS NULL; しかし、これで差集合が得られるのかわかりません。 left joinして、table2 is nullにすれば、差集合に なるか教えて頂けますでしょうか? また、not existsで代用できるみたいですが、その場合、 どのようなSQLを書けばよいでしょうか?

  • MySQLでJOINを使った検索について

    MySQLについて質問があります。 下記のような2テーブルがあります。 ----------------------------- ・item 商品情報を格納。 ・usersitem ユーザーが所有している商品の個数を格納。 ----------------------------- この2つのテーブルから2つのリストを取り出したいと考えています。 【A】特定のユーザーが複数所有している商品の一覧 【B】特定のユーザーが所有していない商品の一覧 【A】は出来たのですが、【B】のSQL文がわかりません。 どうかご教授いただけませんでしょうか。 ■テーブルを作成したSQL ----------------------------- CREATE TABLE `test`.`item` ( `itemid` SERIAL NOT NULL DEFAULT NULL UNIQUE, `itemname` VARCHAR( 256 ) ); CREATE TABLE `test`.`usersitem` ( `id` SERIAL NOT NULL DEFAULT NULL UNIQUE, `userid` INT, `itemid` INT, `count` INT ); ----------------------------- ■【A】を実現したSQL 条件:userid「1」のユーザーがcount「2」以上の一覧。 ----------------------------- SELECT * FROM `item` LEFT JOIN `usersitem` ON (`item`.`itemid` = `usersitem`.`itemid`) WHERE `usersitem`.`userid` = 1 AND `usersitem`.`count` >= 2 ----------------------------- ■【B】を実現しようとしたが違っていたSQL 条件:userid「1」のユーザーがcount「0」以下、または登録されていない一覧。 ----------------------------- SELECT * FROM `item` LEFT JOIN `usersitem` ON (`item`.`itemid` = `usersitem`.`itemid`) WHERE ( `usersitem`.`userid` = 1 AND `usersitem`.`count` <= 0 ) OR `usersitem`.`userid` != 1 ----------------------------- 結果: 個数情報が登録されていない商品が表示されない。 違うユーザーの情報が表示されてしまう。 使用しているのは MySQL 5.5.29です。 よろしくお願いいたします。

  • mysqlでJOIN文

    関係有りそうな部分だけ抜粋します。 mysqlで外部キーを設定して、 下記のようなSQLを実行してみましたが、 #1066 - Not unique table/alias: 'tie_up'と エラーメッセージが表示されました。 何がおかしいのでしょうか? 外部キーは「song」テーブルの「tie_up_1_ID」、同「song」テーブルの「tie_up_2_ID」、 それと「tie_up」テーブルの「tie_up」です。 SQLを触るの5年振りなんで・・・。 SELECT * FROM ((((( song left JOIN kashu ON song.kashu_ID = kashu.kashu_ID) left JOIN sakushi ON song.sakushi_ID = sakushi.sakushi_ID) left JOIN sakkyoku ON song.sakkyoku_ID = sakkyoku.sakkyoku_ID) left JOIN hennkyoku ON song.hennkyoku_ID = hennkyoku.hennkyoku_ID) left JOIN tie_up ON song.tie_up_1_ID = tie_up.tie_up_ID) left JOIN tie_up ON song.tie_up_2_ID = tie_up.tie_up_ID;

    • ベストアンサー
    • MySQL
  • テーブル結合で、結合フィールドをWHERE句に用いた時に、結合フィールドのデータがNULLになってしまう。

    MySQL 4.0.24-standard + PHP Version 4.3.11 を使用しています。 下記のような table_a, table_b があり、idフィールドで外部結合させています。 table_a id|value ------- 1 | 0 2 | 1 table_b id|name ------- 1 | A 2 | B SELECT * FROM table_a NATURAL LEFT OUTER JOIN table_b; result id|value|name -------------- 1 | 0 | A 2 | 1 | B しかし、下記のクエリでは、このようにidがNULLになってしまいます。 SELECT * FROM table_a NATURAL LEFT OUTER JOIN table_b WHERE table_a.id = 1; result id |value|name -------------- NULL| 0 | A 以下のような結果を得たいのですが、どうすれば良いのでしょうか? result id|value|name -------------- 1 | 0 | A

    • ベストアンサー
    • MySQL
  • MySQLのLEFT JOINについて

    LEFT JOINを使ったMySQLに挑戦しています。 テーブルとテーブルを照らしあわせ、右側のテーブルに優先的に表示する方法ですが、1つのテーブルと1つのテーブルではなく1つのテーブルに対して複数のテーブルと照合する方法とはあるのでしょうか? どうかおしえていただけないでしょうか? 下記に作成中のソースを示します。 宜しくお願いします。 $STRSQL=qq{SELECT }; $STRSQL=$STRSQL.qq{kyu_table.iput_charg_id,k_data_m_table.iput_charg_id }; $STRSQL=$STRSQL.qq{FROM k_data_m_table LEFT JOIN kyu_table ON k_data_m_table.iput_charg_id = kyu_table.iput_charg_id }; $STRSQL=$STRSQL.qq{WHERE k_data_m_table.iput_charg_id = "$KYU" };

  • mySQLの内部結合について

    現在mySQLを使って、SQL文の勉強をしているのですがわからないことがあり、質問させていただきました。 テーブル同士をINNER JOINして結果を取得して、これに対してさらに別の処理(Whereなど)を行いたいのですが、うまくやり方がわかりません。 具体的にSQL文でいうとこんな感じです(ただしエラーが出て動きません)。 SELECT cmaster.comic_id,tags,title FROM mysql.comic_tag as ctag INNER JOIN mysql.comicmaster as cmaster ON ctag.comic_id = cmaster.comic_id AND WHERE tags = 'aa' この処理でやりたいことを説明するとcomic_tagとcomicmasterを結合して、その結果に対してさらにWhereでデータを絞るということしています。 このような場合はどのように処理をしたらいいんでしょうか?またjoinした後のデータを、既存のテーブルのように扱いたいのですが、なにか方法はないのでしょうか?

    • ベストアンサー
    • MySQL
  • MySQLでLEFT JOIN

    MySQL4.0.26でテーブルの左外部結合がしたいです。 左テーブルAと 右テーブルBをWHERE句で抽出したもの を結合することはできないのでしょうか? 考えた以下の式ではエラーが出てしまいます。 SELECT * FROM A LEFT JOIN ( SELECT * B WHERE id = 1 ) AS B2 ON A.id = B2.id

    • ベストアンサー
    • MySQL
  • MySQLで差集合を2重で使うには?

    以下の3つのテーブルがあります。 レコードも一緒に示しておきます。 grp:グループ名(と管理者)  name(グループ名)、admin(管理者ID) belong:各グループの所属名簿  grp(グループ名)、user(所属ユーザのID) reserve:グループ参加予約中ユーザのリスト  grp(グループ名)、user(申込みをしたユーザのID) ここで、あるユーザIDに対し、 「参加も参加予約もしていないグループ」の表を取り出したいのです。 id001が参加していないグループの表は以下のSQL文でできました。 SELECT grp.name FROM grp LEFT JOIN belong ON grp.name = belong.grp WHERE belong.user != "id001"; この表からさらに参加予約しているグループを排除するにはどうすればいいでしょうか? お願いします。

    • ベストアンサー
    • MySQL
  • inner joinについて

    SQLのデータ抽出方法についてお教え下さい。 TABLE_2をdistinctで重複を無くして、TABLE_1とinner joinさせたいです。 select distinct TABLE_2.id と select TABLE_1.ID from TABLE_1 inner join distinct TABLE_2.ID といったようなことをやりたいです。 TABLE_1 ID 001 001 002 002 002 TABLE_2 ID 001 001 002 002 002 環境はMYSQL5.5になります。よろしくお願いいたします。

  • サブクエリを利用したSQL文から複数の抽出条件

    例えば、以下のようなサブクエリを利用したSQL文があります。 SELECT table_a.* FROM table_a LEFT JOIN (SELECT table_b.* FROM table_b LEFT JOIN table_c ON (table_b.id = table_c.bid) WHERE table_b.type='1') AS tbl ON (table_a.id = tbl.aid) このSQL文にWHERE句で条件を指定したいのですが、サブクエリで指定しているtblテーブルのvalueフィールドが「1」と「20」のものを抽出したいと思います。 WHERE (tbl.value='1' AND tbl.value='20') としても結果が帰って来ません。 これは、WHEREする条件の数だけ、サブクエリでテーブルを作って条件を指定するのでしょうか? 効率が悪そうなので、他の方法があるのではと思いご質問させて頂きました。 お分かりになる方がいれば、よろしくお願いします。