簡體   English   中英

MySQL查詢不會返回所需的結果。 沒有訂單的客戶不顯示

[英]MySQL query does not return needed result. Customers who does not have any orders, does not show

我仍在進行SQL培訓。 所以我有兩個表CUSTOMERS和ORDERS(外鍵表)。 現在,我需要獲得所有沒有任何訂單的客戶。 這是我的查詢

select LASTNAME, FIRSTNAME 
  from CUSTOMERS 
  WHERE CUSTOMERS.ID NOT IN 
      (select ID_CUSTOMER from ORDERS);

+-----------+--------------+------+-----+---------+-------+
| Field     | Type         | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+-------+
| ID        | int(11)      | NO   | PRI | NULL    |       |
| FIRSTNAME | varchar(50)  | YES  |     | NULL    |       |
| LASTNAME  | varchar(50)  | YES  |     | NULL    |       |
| ADDRESS   | varchar(100) | YES  |     | NULL    |       |
+-----------+--------------+------+-----+---------+-------+


+---------------+--------------+------+-----+---------+-------+
| Field         | Type         | Null | Key | Default | Extra |
+---------------+--------------+------+-----+---------+-------+
| ID            | int(11)      | NO   | PRI | NULL    |       |
| PRODUCT_NAME  | varchar(100) | YES  |     | NULL    |       |
| PRODUCT_PRICE | double(10,4) | YES  |     | NULL    |       |
| DATE_ORDER    | date         | YES  |     | NULL    |       |
| ID_CUSTOMER   | int(11)      | YES  |     | NULL    |       |
| AMOUNT        | int(11)      | YES  |     | NULL    |       |
+---------------+--------------+------+-----+---------+-------+

但是我確實收到了空集(0秒)/但是我不確定那些存在。

我懷疑ORDERS表的ID_CUSTOMER列中有一些NULL值。 當子查詢中存在NULL值時, NOT IN失敗。

使用NOT EXISTS

select LASTNAME, FIRSTNAME 
  from CUSTOMERS C
  WHERE NOT EXISTS (select ID_CUSTOMER from ORDERS O Where C.ID = O.ID_CUSTOMER );

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM