在Doris中用SQL删除本月数据时报错
errCode = 2, detailMessage = errCode = 2, detailMessage = Left expr of binary predicate should be column name, predicate: dw_cdate >= concat(substr('2024-03-20', 1, 7), '-01'), left expr type:DATETIME
要替换为怎样的SQL才能达到效果?
Doris删除本月数据
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
4条回答 默认 最新
关注此回答引用GPT4,由博主鑫宝Code参考后得出
在Doris中,如果您遇到错误
Left expr of binary predicate should be column name,这通常意味着在SQL查询中,二元谓词(比如比较操作符>=)的左侧表达式应该是一个列名,而不是一个常量或函数的结果。根据您提供的错误信息,问题出现在
dw_cdate >= concat(substr('2024-03-20', 1, 7), '-01')这个条件中。看起来您试图构造一个日期范围来删除本月的数据,但是concat函数的使用方式可能不正确。为了解决这个问题,您可以尝试以下步骤:
- 首先,确保
dw_cdate是一个列名。 - 其次,使用正确的日期函数来获取本月的第一天。在Doris中,您可以使用
DATE_FORMAT函数来格式化日期。
下面是一个示例SQL,它将删除
dw_cdate在本月范围内的所有行:DELETE FROM your_table_name WHERE dw_cdate >= DATE_FORMAT(NOW(), '%Y-%m-01') AND dw_cdate < DATE_FORMAT(NOW() + INTERVAL 1 MONTH, '%Y-%m-01');在这个示例中,
your_table_name应该替换为您实际的表名。这个查询将删除所有dw_cdate在本月第一天到下个月第一天之间的行。解释一下这个查询:
DATE_FORMAT(NOW(), '%Y-%m-01')将当前日期格式化为本月的第一天(例如,如果今天是2024年3月20日,这将返回2024-03-01)。NOW() + INTERVAL 1 MONTH将当前日期增加一个月,然后DATE_FORMAT(..., '%Y-%m-01')将这个日期格式化为下个月的第一天(例如,如果今天是2024年3月20日,这将返回2024-04-01)。dw_cdate >= DATE_FORMAT(NOW(), '%Y-%m-01')确保dw_cdate是本月的日期。dw_cdate < DATE_FORMAT(NOW() + INTERVAL 1 MONTH, '%Y-%m-01')确保dw_cdate不是下个月的日期。
请确保在执行删除操作之前备份您的数据,以防止意外数据丢失。
本回答被题主选为最佳回答 , 对您是否有帮助呢?评论 打赏 举报解决 2无用- 首先,确保