如何在带有 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_Date
和 end_date
。 start_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 子句中使用比较运算符?的主要内容,如果未能解决你的问题,请参考以下文章
如何在光标的 select 语句 where 子句中传递逗号分隔值
在 WHERE 子句中使用函数编写 SQL SELECT 语句是不是有 Django 等效项?