2017-06-02 20 views
0

這是我的問題。我有一個SQL語句:即使其中一個where子句不被滿足,也會在SQL中返回結果

SELECT * FROM table1 WHERE week_no >= 1 AND week_no <= 5 

但是結果只返回以下結果。

Col1 | Col2 | Week_No 
A  B  1 
C  D  2 
D  E  4 
F  G  5 

我試圖推到查詢的「week_no」#3默認值的數組結果,但現在看來,這是行不通的。

我想知道是否有更簡單的方法來執行SQL?如插入:

Col1 | Col2 | Week_No 
R  R  3 

R-R作爲默認值。

感謝您的幫助。

+1

你有數據庫中的數字表嗎? –

+0

@vkp表中的星期數?是的,我確實有,但結構是week_start和week_end(在這個例子中,1和5是值)。 – Ronald

+0

看看這[回答](https://stackoverflow.com/questions/186756/generating-a-range-of-numbers-in-mysql)並創建一個數字表..然後你需要做的是一個'左加入'到.. –

回答

3

你想要一個outer join。下面是一個典型的方法:

SELECT COALESCE(t1.col1, 'R') as col1, COALESCE(t1.col2, 'R') as col2, 
     n.n as week_no 
FROM (SELECT 1 as n UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL 
     SELECT 4 UNION ALL SELECT 5 
    ) n LEFT JOIN 
     table1 t1 
     ON t1.week_no >= n.n AND week_no <= n.n; 
+0

你對我來說太快:) – Barmar

+0

他仍然睡着了!你們都是傳奇 – maSTAShuFu

+0

但是週數是動態的而不是靜態的。有什麼建議麼。 :)(upvoted你的答案雖然):) – Ronald

0

請檢查是否每列中的數據類型,你會插入到表或您的陣列。

相關問題