在 WHERE 子句中引用列别名
Referencing a column alias in the WHERE clause
有什么方法可以使用 WHERE 或其他方式 return 一个“AS”结果吗?
我在 FONE1 列上做一个 SUBSTRING 并试图 return DDD = 31 但我得到了错误,
代码:1054。'where clause' 0.000 秒
中的未知列 'DDD'
-->
SELECT **SUBSTRING(FONE1,1,2) AS DDD**, FONE1, F1STA,LASTCALL
FROM discador_processados
WHERE fila_mailing = 2638
AND F1STA ='ANSWER'
AND CLASSE1 IN ('VC2','VC3')
**AND DDD = 31**
AND LASTCALL BETWEEN '2020-10-02 00:00:00' AND '2020-10-30 23:59:59'
我的想法是让return低于
DDD FONE1 F1STA LASTCALL
31 31999999999 ANSWER 2020-10-02 09:08:13
31 31999999999 ANSWER 2020-10-02 09:09:16
31 31999999999 ANSWER 2020-10-02 09:17:41
谢谢!
我建议将 WHERE
写成:
WHERE fila_mailing = 2638 AND
F1STA ='ANSWER' AND
CLASSE1 IN ('VC2', 'VC3') AND
FONE1 LIKE '31%' AND
LASTCALL >= '2020-10-02' AND
LASTCALL < '2020-10-31'
注意逻辑的变化:
FONE1
好像是一个字符串,所以比较使用string操作。
DATETIME
比较使用 >=
和 <
而不是 BETWEEN
,因此不会错过最后一天的最后一秒。
- 日期格式已简化。
您不能在 WHERE
子句中使用输出列别名,因为输出列表达式尚未计算,因此根本不存在。
但您可以在 HAVING
子句中这样做:
SELECT SUBSTRING(FONE1,1,2) AS DDD, FONE1, F1STA,LASTCALL
FROM discador_processados
WHERE fila_mailing = 2638
AND F1STA ='ANSWER'
AND CLASSE1 IN ('VC2','VC3')
AND LASTCALL BETWEEN '2020-10-02 00:00:00' AND '2020-10-30 23:59:59'
HAVING DDD = 31
并注意 Gordon Linoff 的回答 - 它非常有用。
有什么方法可以使用 WHERE 或其他方式 return 一个“AS”结果吗?
我在 FONE1 列上做一个 SUBSTRING 并试图 return DDD = 31 但我得到了错误, 代码:1054。'where clause' 0.000 秒
中的未知列 'DDD'-->
SELECT **SUBSTRING(FONE1,1,2) AS DDD**, FONE1, F1STA,LASTCALL
FROM discador_processados
WHERE fila_mailing = 2638
AND F1STA ='ANSWER'
AND CLASSE1 IN ('VC2','VC3')
**AND DDD = 31**
AND LASTCALL BETWEEN '2020-10-02 00:00:00' AND '2020-10-30 23:59:59'
我的想法是让return低于
DDD FONE1 F1STA LASTCALL
31 31999999999 ANSWER 2020-10-02 09:08:13
31 31999999999 ANSWER 2020-10-02 09:09:16
31 31999999999 ANSWER 2020-10-02 09:17:41
谢谢!
我建议将 WHERE
写成:
WHERE fila_mailing = 2638 AND
F1STA ='ANSWER' AND
CLASSE1 IN ('VC2', 'VC3') AND
FONE1 LIKE '31%' AND
LASTCALL >= '2020-10-02' AND
LASTCALL < '2020-10-31'
注意逻辑的变化:
FONE1
好像是一个字符串,所以比较使用string操作。DATETIME
比较使用>=
和<
而不是BETWEEN
,因此不会错过最后一天的最后一秒。- 日期格式已简化。
您不能在 WHERE
子句中使用输出列别名,因为输出列表达式尚未计算,因此根本不存在。
但您可以在 HAVING
子句中这样做:
SELECT SUBSTRING(FONE1,1,2) AS DDD, FONE1, F1STA,LASTCALL
FROM discador_processados
WHERE fila_mailing = 2638
AND F1STA ='ANSWER'
AND CLASSE1 IN ('VC2','VC3')
AND LASTCALL BETWEEN '2020-10-02 00:00:00' AND '2020-10-30 23:59:59'
HAVING DDD = 31
并注意 Gordon Linoff 的回答 - 它非常有用。