2017-06-02 46 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

请检查是否每列中的数据类型,你会插入到表或您的阵列。

相关问题