SQL select where column子句

时间:2017-09-13 19:10:53

标签: mysql sql

我有一张表如下

date1   |  date2  | datechoice

1-5-17    2-6-17      date2

Datechoice可以是date1或date2。我想首先查看datechoice列,以确定在where语句中使用哪个列。

示例伪代码:

CASE WHEN datechoice ='date2' 
     THEN where date2 >= 2-2-17 AND where date2 <= 2-9-17 
     ELSE where date1 >= 2-2-17 AND where date1 <= 2-9-17

我该怎么做?

2 个答案:

答案 0 :(得分:5)

WHERE (datechoice ='date1' and date1 >= '2017-02-02' AND date1 <= '2017-02-09')
   OR (datechoice ='date2' and date2 >= '2017-02-02' AND date2 <= '2017-02-09') 

答案 1 :(得分:0)

这可能是索引使用的可疑因素。我无法看到如何使用索引,因为我们考虑了两个日期。 OR方法或两个查询和联合实际上可能更有效。

WHERE case when datechoice = 'date1' then date1 
            when datechoice = 'date2' then date2 end 
            between '2017-02-02' and '2017-02-09'

在使用之间小心我假设date1和date2实际上是没有时间成分的日期字段,如果时间存在则可能在上边界上缺少记录。