【发布时间】:2020-07-31 15:55:28
【问题描述】:
我收到以下查询的弃用错误,我似乎无法找出正确的语法。
SELECT case_id, start_date, end_date,
@calc_end_date:= COALESCE(actual_end_date, end_date, CURDATE()),
DATE_SUB(@calc_end_date,INTERVAL 5 day) AS ending_soon
FROM authorizations;
查询有效,但我收到以下警告:
Setting user variables within expressions is deprecated and will be removed in a future release. Consider alternatives: 'SET variable=expression, ...', or 'SELECT expression(s) INTO variables(s)'.
我试过了(为简单起见,省略了部分查询):
SELECT case_id, start_date, end_date,
(SELECT COALESCE(actual_end_date, end_date, CURDATE()) FROM authorizations INTO @calc_end_date)
FROM authorizations;
还有:
SELECT case_id, start_date, end_date,
(SET calc_end_date = COALESCE(actual_end_date, end_date, CURDATE()))
FROM authorizations;
两者都不起作用。我做错了什么?
【问题讨论】:
-
查询中嵌入的使用变量一直是粗略的,所以当它们消失时我不会错过它们。会话变量仍然存在,这就是消息告诉您的内容。但是,如果您的 SELECT 返回许多行,您希望从哪一行执行变量赋值?
-
@The Impaler 我稍后在查询中使用它,为了简单起见,我把它省略了,我现在编辑了查询。