如何在带有 select 语句的 where 子句中使用比较运算符?

Posted

技术标签:

【中文标题】如何在带有 select 语句的 where 子句中使用比较运算符?【英文标题】:How to use coma*** operators in where clause with select statement? 【发布时间】:2018-09-12 11:54:08 【问题描述】:

我目前正在对 HIVE 进行查询并使用 SQL Workbench。我想每月从 2 个表中获取数据。为了引用日期,我使用了另一个包含两列的表:start_Dateend_datestart_Date 包含 月份开始日期,即 01/01/2018。同样,end_date 包含 month结束日期,即 31/01/2018。

查询类似于:

select *
from table1 a join
     table2 b
     on a.pkey = b.pkey
where effective_date >= (select start_Date
                         from date_table
                         where year(start_date) = year(current_date) and month(start_date) = month(current_date)
                        );

但显然它不起作用。

有人可以给我一个正确的解决方案吗?

如果有任何疑问,请告诉我。

【问题讨论】:

样本数据和期望的结果真的很有帮助。 你好,样本数据如下 tarrif_name tarrif_start_date tarrif_end_date plan1 09/08/2018 31/09/2019 plan2 01/09/2013 31/02/9999 plan3 01/01/2012 01/09/ 2018 plan4 01/01/2014 31/08/2016 我希望计划在特定月份有效,并且这些月份的第一个和最后一个日期在问题中提到的另一个表中。 错误信息是什么?嵌套查询的结果是单个值吗? 是的,嵌套查询的结果是单个日期值,其日期为例如。作为 2018 年 1 月 1 日的月初。有没有其他方法可以做到这一点? 错误信息是什么?你得到了不好的结果还是查询失败了? 【参考方案1】:

我认为这样的事情可以帮助你:

SELECT *
FROM table1 a
JOIN table2 b
ON a.pkey = b.pkey
JOIN (SELECT start_Date
      FROM date_table
      WHERE year(start_date) = year(current_date)
      AND month(start_date) = month(current_date)
      ) dt
ON a.effective_date >= dt.start_date ;

由于您尚未发布示例数据,因此我没有测试代码,但我希望它有所帮助。

【讨论】:

以上是关于如何在带有 select 语句的 where 子句中使用比较运算符?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用带有 WITH 子句的 INSERT 语句?

SQL语句中,子句不能使用列别名问题

如何在光标的 select 语句 where 子句中传递逗号分隔值

在 WHERE 子句中使用函数编写 SQL SELECT 语句是不是有 Django 等效项?

如何在python中的mysql中使用带有变量的select语句

带有插入语句的 Where 子句