0
我寫了下面的腳本記錄:忽略WHERE條件,如果沒有找到
SELECT vil.account_id ,
vil.imp_id,
vil.owner ,
vil.start_date,
CASE
WHEN ac.status = 4
THEN status_date
ELSE NULL
END AS Live_date,
cs.country_code
FROM ACCOUNT ac
INNER JOIN vu_imp_list vil
ON vil.account_id = ac.account_id
INNER JOIN entity e
ON ac.entity_id = e.entity_id
INNER JOIN country_specifics cs
ON e.country_id = cs.country_id
WHERE ac.account_id IN
('000206789', '000207464', '000207696', '000207746')
AND
(vil.start_date =
(SELECT MIN(vils.start_date)
FROM vu_imp_list vils
WHERE vil.account_id = vils.account_id)
這將返回最早imp_id
每個account_id
。但是,它會忽略那些沒有imp_id
的。由於某些account_ids
在表vu_imp_list
處沒有imp_id
; WHERE's second condition
只會提取那些記錄有start_date
和imp_id
的記錄。總之,如果在表vu_imp_list
中找不到相應的記錄,如何忽略這種情況。我發現this post爲MySQL相關的,但似乎什麼不對的地方,因爲我不斷收到錯誤missing SELECT keyword
SELECT vil.account_id ,
vil.imp_id,
vil.owner ,
vil.start_date,
CASE
WHEN ac.status = 4
THEN status_date
ELSE NULL
END AS Live_date,
cs.country_code
FROM ACCOUNT ac
INNER JOIN vu_imp_list vil
ON vil.account_id = ac.account_id
INNER JOIN entity e
ON ac.entity_id = e.entity_id
INNER JOIN country_specifics cs
ON e.country_id = cs.country_id
WHERE ac.account_id IN
('000206789', '000207464', '000207696', '000207746')
AND
((vil.start_date =
(SELECT MIN(vils.start_date)
FROM vu_imp_list vils
WHERE vil.account_id = vils.account_id))
OR
NOT EXISTS
(vil.start_date = (SELECT MIN(vils.start_date)
FROM obi.vu_implementation_list vils
WHERE vil.ob10_account_id = vils.ob10_account_id)
沒錯,這是我在找什麼。我剛剛用'AND(vil.imp_id IS NULL')替換了'AND(vil.start_date IS NULL',因爲如果有的話,舊的方法將包括最老的'start_date' **和**'NULL' – Hawk