2014-11-06 69 views
-1

我有一個表如何選擇取決於2結果記錄的查詢

表一(id,name, start_date)

表B(id(FK to Table a), start_date)

這裏是我的問題陳述:

  1. 如果表b中存在id,則從表b中選擇start_date的值e從表a中選擇默認的start_date

我可以通過有2個獨立的查詢來獲得邏輯工作,我的挑戰是在單個查詢中實現它嗎? 在單個查詢中可以實現嗎?

+1

是有可能在單個查詢來實現嗎?是。最簡單的方法似乎涉及一個OUTER JOIN(左)和coalese函數,或者可能是一個case語句。其他解決方案也可以工作,但是它們依賴於RDBMS,所以RDBMS是什麼和什麼版本? (MySQL,SQL Sever(2013)?,Oracle(11i)?,DB2)簡單地說,在接近無盡的一系列選項中遇到第一個非空值。與左連接一起使用時,如果它不存在,它將產生一個Null值......似乎適合您的嘗試。 @AndreiHirsu似乎已經定義了它。 – xQbert 2014-11-06 13:42:32

回答

3

試試這個:

SELECT 
    a.ID 
    , COALESCE(b.start_date,a.start_date) 
FROM 
    TableA a 
LEFT JOIN 
    TableB b 
ON a.id = b.Id 
+0

謝謝,幫助。對不起,我不是一個普通的SQL程序員,因此沒有提供太多的信息。我已經有2個查詢的解決方案。只是想進一步優化它。 – netizen 2014-11-07 14:39:54

相關問題