[英]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.