2017-09-30 37 views
1

所以我一直在這裏尋找,無法真正弄清楚爲什麼這不起作用,並想知道它是我的語法還是MySQL工作臺的一個問題。我從多個表中獲取信息,但無法使用「爲空」工作。 「不爲空」工作得很好,並且「SELECT * from orders where employee_id is null」起作用。「IS NULL」無法正常工作

select orders.order_id, orders.order_date, orders.shipped_date, 
customer_last_name, employees.employee_id 
from customers 
join orders on 
customers.customer_id = orders.customer_id 
join employees on 
orders.employee_id = employees.employee_id 
where orders.employee_id is null; 

就像我剛纔提到的,在上面的「不爲空」工作正常,所以「爲空」應該工作正常嗎?順便提一下,實際上是空數據。

+1

你是什麼意思「它不工作」?它給你一個錯誤信息? (如果是這樣,錯誤是什麼?)它只是給你一個空集? (如果是這樣,你能提供給我們一個表格數據的例子。) – Bing

+0

你的join子句和where子句將保證0行在一起。 –

+1

「orders.employee_id IS NULL」的行由ON子句過濾。也許你需要一個LEFT JOIN。您應該發佈樣本數據和預期結果。 –

回答

0

後,我問這個問題,我想通了:試試這個,或者使用左聯接操作:

select orders.order_id, orders.order_date, orders.shipped_date, 
customer_last_name, employees.employee_id 
from customers, orders, employees 
where customers.customer_id = orders.customer_id 
and employees.employee_id is null 
and orders.employee_id is null; 

檢查你的計劃。我加入了一張我不需要的表格,結果表格中排除了空數據,因爲它匹配我需要查詢的內容。我會發布正確的代碼,並保留它以防其他人遇到類似問題

select orders.order_id, orders.order_date, orders.shipped_date, 
customer_last_name 
from customers 
join orders on 
customers.customer_id = orders.customer_id 
where orders.employee_id is null; 
0

你怎麼能比較2個空值?

join employees on orders.employee_id = employees.employee_id 
where 
    orders.employee_id is null; 

orders.employee_id = employees.employee_id對於null不是一個正確的子句我想。這將排除null值。

0

你的加入有一點小錯誤。幾乎就在 enter image description here