我有一个生成日期的表(umt\u date),我需要在第二个查询中使用这个日期来获取大于等于umt\u date表中日期的所有数据
umt_date
----------------------------
|processdate||processname|
----------------------------
| 2020-06-01 | A |
----------------------------
| 2020-06-01 | B |
当我执行sql时
select * from main_table
where processdate >= (select processdate from umt_date where processname='A')
我得到以下错误
sql错误[40000][42000]:编译语句时出错:失败:semanticexception行0:-1不支持的子查询表达式“processdate”:只允许作为顶级连接的子查询表达式
因为我们没有任何公共列,所以也不能执行连接。还有什么办法?
2条答案
按热度按时间gmxoilav1#
你可以试着用
WITH
下面这样的条款或者你也可以得到一个布尔条件检查:
rkue9o1l2#
如果子查询返回单行,请使用交叉联接:
如果子查询返回多行,则在某些条件下使用join。交叉连接在这种情况下并不好,因为它会复制数据,尽管where可能会过滤重复的行