-1
我有一個表如何選擇取決於2結果記錄的查詢
表一(id,name, start_date)
表B(id(FK to Table a), start_date)
這裏是我的問題陳述:
- 如果表b中存在id,則從表b中選擇start_date的值e從表a中選擇默認的start_date
我可以通過有2個獨立的查詢來獲得邏輯工作,我的挑戰是在單個查詢中實現它嗎? 在單個查詢中可以實現嗎?
我有一個表如何選擇取決於2結果記錄的查詢
表一(id,name, start_date)
表B(id(FK to Table a), start_date)
這裏是我的問題陳述:
我可以通過有2個獨立的查詢來獲得邏輯工作,我的挑戰是在單個查詢中實現它嗎? 在單個查詢中可以實現嗎?
試試這個:
SELECT
a.ID
, COALESCE(b.start_date,a.start_date)
FROM
TableA a
LEFT JOIN
TableB b
ON a.id = b.Id
謝謝,幫助。對不起,我不是一個普通的SQL程序員,因此沒有提供太多的信息。我已經有2個查詢的解決方案。只是想進一步優化它。 – netizen 2014-11-07 14:39:54
是有可能在單個查詢來實現嗎?是。最簡單的方法似乎涉及一個OUTER JOIN(左)和coalese函數,或者可能是一個case語句。其他解決方案也可以工作,但是它們依賴於RDBMS,所以RDBMS是什麼和什麼版本? (MySQL,SQL Sever(2013)?,Oracle(11i)?,DB2)簡單地說,在接近無盡的一系列選項中遇到第一個非空值。與左連接一起使用時,如果它不存在,它將產生一個Null值......似乎適合您的嘗試。 @AndreiHirsu似乎已經定義了它。 – xQbert 2014-11-06 13:42:32