[英]NULL Values missing of joined table
這是一個簡單的例子: sqlfiddle.com /#!9/8087c5/1
我有以下查詢:
select
contracts.ID as contractID,
departments.ID as departmentID,
max(invoices.timestamp) as timestamp
from contracts
left join departments on departments.ID = contracts.departmentID and departments.accountingType > 0
left join invoices on contracts.ID = invoices.contractID
group by contractID
having departmentID is not null;
我期望得到如下結果:
+------------+--------------+---------------------+
| contractID | departmentID | timestamp |
+------------+--------------+---------------------+
| 101 | 301 | NULL |
+------------+--------------+---------------------+
| 102 | 302 | NULL |
+------------+--------------+---------------------+
| 103 | 303 | 2020-05-01 11:11:00 |
+------------+--------------+---------------------+
相反,我得到:
+------------+--------------+---------------------+
| contractID | departmentID | timestamp |
+------------+--------------+---------------------+
| 103 | 303 | 2020-05-01 11:11:00 |
+------------+--------------+---------------------+
我不明白為什么查詢會削減最后一個左連接表的 NULL 值。 我錯過了一些非常簡單的東西嗎?
好的 - 問題是group by contractID
正確應該是group by contracts.ID
。 按連接發票 talbes 列 contractID 分組的group by contractID
分組,這就是缺少列的原因。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.