簡體   English   中英

MySQL 不從 NOT IN 函數返回值

[英]MySQL not returning values from NOT IN function

我目前正在嘗試編寫一個查詢,顯示至少有 5 個訂單的客戶和沒有訂單的客戶。 訂單在他們自己的表中進行跟蹤,為了找到有 0 個訂單的客戶,我們必須找到不在訂單中的客戶。 下面是我嘗試使用的查詢,它為零訂單返回同一個客戶 5 次。

with t1 as
 (select o.customerNumber, c.customerName, count(o.orderNumber) as FiveOrders
 from orders o join customers c on (o.customerNumber = c.customerNumber)
 group by o.customerNumber having count(o.orderNumber) = 5),
 t2 as
 (select distinct o.customerNumber, c.customerName, count(o.orderNumber) as NoOrders
 from orders o join customers c on (o.customerNumber = c.customerNumber)
 group by c.customerNumber not in(select customerNumber from orders))
 select distinct t1.customerNumber as FiveOrderNumber, t1.customerName as FiveOrderName,
 t2.customerNumber as NoOrderNumber, t2.customerName as NoOrderName
 from t1 join t2
 order by NoOrderName;

感謝任何和所有幫助!

如果錯誤在第二個表中只,我認為這是與使用條件NOT IN沒有任何邏輯比較后,我覺得你可以很容易地獲得更多想要的結果:

select distinct customerNumber, customerName, "0" as NoOrders 
from customers 
where customerNumber not in (Select customerNumber from orders)

如果group by很重要,您可以像在代碼中一樣使用它。

Zerofive可以與LEFT JOIN一起計算

select c.customerNumber, max(c.customerName) customerName, count(o.orderNumber) as FiveOrdersOrZero
from customers c
left join orders o on o.customerNumber = c.customerNumber
group by c.customerNumber 
having count(o.orderNumber) in ( 0, 5 )
order by FiveOrdersOrZero

暫無
暫無

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

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