[英]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很重要,您可以像在代碼中一樣使用它。
Zero
或five
可以與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.