[英]MySQL except clause doesnt work
給定客戶表和貸款表,我希望找到沒有貸款的客戶。 模式定義如下:
mysql> select * from customer;
+---------------+-----------------+---------------+
| customer_name | customer_street | customer_city |
+---------------+-----------------+---------------+
| Adams | Spring | Pittsfield |
| Brooks | Senator | Brooklyn |
| Curry | North | Rye |
| Glenn | Sand Hill | Woodside |
| Green | Walnut | Stamford |
| Hayes | Main | Harrison |
| Johnson | Alma | Palo Alto |
| Jones | Main | Harrison |
| Lindsay | Park | Pittsfield |
| Smith | North | Rye |
| Turner | Putnam | Stamford |
| Williams | Nassau | Princeton |
+---------------+-----------------+---------------+
12 rows in set (0.00 sec)
mysql> select * from borrower;
+---------------+---------+
| customer_name | loan_id |
+---------------+---------+
| Adams | L16 |
| Curry | L93 |
| Hayes | L15 |
| Jackson | L14 |
| Jones | L17 |
| Smith | L11 |
| Smith | L23 |
| Williams | L17 |
| Adams | L19 |
| Adams | L15 |
| Jones | L15 |
| Williams | L23 |
+---------------+---------+
12 rows in set (0.00 sec)
現在,我嘗試查詢: select customer_name from customer except select customer_name from borrower;
但是我得到了錯誤:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'select customer_name from borrower' at line 1
我也嘗試過difference
但是會彈出同樣的錯誤。 但是union
運作良好。
mysql> select customer_name from customer union select customer_name from borrower;
+---------------+
| customer_name |
+---------------+
| Adams |
| Brooks |
| Curry |
| Glenn |
| Green |
| Hayes |
| Johnson |
| Jones |
| Lindsay |
| Smith |
| Turner |
| Williams |
| Jackson |
+---------------+
13 rows in set (0.00 sec)
有什么建議我可能錯了嗎?
你能試一下嗎:
select customer_name from customer where customer_name not in (select customer_name from borrower);
因此,您可以從尚未貸款的客戶中選擇customer_name。
我沒有檢查,但也許是更簡單的方法。
除了和difference關鍵字在mysql中不起作用。
在下面的查詢中,即使使用龐大的表,也可以更快地提供結果。
SELECT cust.customer_name
FROM customer cust
LEFT JOIN borrower brw ON brw.customer_name=cust.customer_name
WHERE brw.customer_name IS NULL;
注意:兩個表中都應有cust_id才能連接數據,而不是customer_name並應建立索引。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.