Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да покажете редовете, които не присъстват в друга таблица в MySQL

Понякога може да се наложи да намерите редове, които не присъстват в друга таблица, или да изберете редове, които не присъстват в друга таблица. В тази статия ще разгледаме как да показваме редове, които не присъстват в друга таблица в MySQL, използвайки клауза NOT EXISTS.


Клауза MySQL НЕ СЪЩЕСТВУВА

MySQL предоставя клаузи EXISTS, UNION и NOT EXISTS, които ви помагат да извършвате операции SET с MySQL таблици. Под операции SET имаме предвид, че можете да третирате MySQL таблиците и резултатите от заявките като математически набори и да избирате редове, които присъстват и в двете таблици, или само в една от таблиците. За нашата статия ще използваме клаузата NOT EXISTS.


Как да покажа редовете, които не присъстват в друга таблица

Ето стъпките за намиране на редове, които не присъстват в друга таблица. Да кажем, че имате две таблици sales(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 |
 +------+------------+--------+

Ето 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, за да изберем ред от продажби таблица, които не присъстват в поръчки таблица, които се избират с помощта на подзаявка. В подзаявката избираме само тези редове от поръчки таблица, чиято дата_на_поръчка е същото като това в продажби таблица.

Нуждаете се от инструмент за отчитане за MySQL? Ubiq улеснява визуализирането на данни за минути и наблюдение в табла за управление в реално време. Опитайте днес!

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Предоставяне на привилегии на потребител за база данни

  2. Как да покажете съпоставянето на вашата връзка в MySQL

  3. Архитектура за сигурност:Ръководство за MySQL

  4. MySQL SELECT последните няколко дни?

  5. MySQL Създаване на изглед, замяна на изглед и изхвърляне на изявления с примери