sql >> データベース >  >> RDS >> Mysql

MySQLの別のテーブルに存在しない行を表示する方法

    別のテーブルに存在しない行を検索したり、別のテーブルに存在しない行を選択したりする必要がある場合があります。この記事では、NOT EXISTS句を使用して、MySQLの別のテーブルに存在しない行を表示する方法を説明します。


    MySQLNOTEXISTS句

    MySQLには、MySQLテーブルでSET操作を実行するのに役立つEXISTS、UNION、およびNOTEXISTS句が用意されています。 SET操作とは、MySQLテーブルとクエリ結果を数学的なセットとして扱い、両方のテーブルまたは一方のテーブルにのみ存在する行を選択できることを意味します。この記事では、NOTEXISTS句を使用します。


    別のテーブルに存在しない行を表示する方法

    別のテーブルに存在しない行を見つける手順は次のとおりです。 2つのテーブルがあるとしますsales(id、order_date、amount) およびorders(id、order_date、amount)

    mysql> create table sales(id int, order_date date, amount int);
    
    mysql> insert into sales(id, order_date, amount)
          values(1, '2021-01-24',250),
          (2, '2021-01-25',250),
          (3, '2021-01-26',250),
          (4, '2021-01-27',250),
          (5, '2021-01-28',250),
          (6, '2021-01-29',250),
          (7, '2021-01-30',250),
          (8, '2021-01-31',250),
          (9, '2021-02-01',250);
    
    mysql> select * from sales;
     +------+------------+--------+
     | id   | order_date | amount |
     +------+------------+--------+
     |    1 | 2021-01-24 |    250 |
     |    2 | 2021-01-25 |    250 |
     |    3 | 2021-01-26 |    250 |
     |    4 | 2021-01-27 |    250 |
     |    5 | 2021-01-28 |    250 |
     |    6 | 2021-01-29 |    250 |
     |    7 | 2021-01-30 |    250 |
     |    8 | 2021-01-31 |    250 |
     |    9 | 2021-02-01 |    250 |
     +------+------------+--------+
    
    mysql> create table orders(id int, order_date date, amount int);
    
    mysql> insert into orders(id, order_date, amount)
          values(5, '2021-01-28',250),
          (6, '2021-01-29',250),
          (7, '2021-01-30',250),
          (8, '2021-01-31',250),
          (9, '2021-02-01',250);
    
    mysql> select * from orders;
     +------+------------+--------+
     | id   | order_date | amount |
     +------+------------+--------+
     |    5 | 2021-01-28 |    250 |
     |    6 | 2021-01-29 |    250 |
     |    7 | 2021-01-30 |    250 |
     |    8 | 2021-01-31 |    250 |
     |    9 | 2021-02-01 |    250 |
     +------+------------+--------+
    

    salesからデータを選択するためのSQLクエリは次のとおりです。 注文に存在しないテーブル テーブル。

    mysql> SELECT *
           FROM sales D
           WHERE NOT EXISTS(SELECT * FROM orders c
                           WHERE D.order_date = C.order_date);
     +------+------------+--------+
     | id   | order_date | amount |
     +------+------------+--------+
     |    1 | 2021-01-24 |    250 |
     |    2 | 2021-01-25 |    250 |
     |    3 | 2021-01-26 |    250 |
     |    4 | 2021-01-27 |    250 |
     +------+------------+--------+

    上記のクエリでは、NOT EXISTS句を使用して、 salesから行を選択します。 注文に存在しないテーブル サブクエリを使用して選択されるテーブル。サブクエリでは、注文からそれらの行のみを選択します order_dateのテーブル 販売と同じです テーブル。

    MySQL用のレポートツールが必要ですか? Ubiqを使用すると、データを数分で簡単に視覚化し、リアルタイムのダッシュボードで監視できます。今日お試しください。

    1. PHPを使用してmysqlデータベースに.sqlファイルをインポートするにはどうすればよいですか?

    2. SQL Serverで先頭と末尾の空白を削除する方法– TRIM()

    3. MySQLでテーブルを作成する

    4. adopフェーズで何が起こるか