我可以在第二个选择中使用num_daysopen
SELECT
DATEDIFF(DATE(NOW()), DATE(dateopened)) AS num_daysopen,
(28 - DATEDIFF(DATE(NOW()), DATE(dateopened))) as days_left
FROM table
以下似乎不起作用,它会比上面的更具可读性吗?
SELECT
DATEDIFF(DATE(NOW()), DATE(dateopened)) AS num_daysopen,
(28 - num_daysopen) as days_left
FROM table
答案 0 :(得分:2)
列别名无法在同一级别使用 因此,添加派生表以添加级别
SELECT
num_daysopen,
(28 - num_daysopen) as days_left
FROM
(
SELECT
DATEDIFF(DATE(NOW()), DATE(dateopened)) AS num_daysopen
FROM
table
) T
请参阅MySQL文档中的"Problems with Column Aliases"
答案 1 :(得分:2)
如docs
中所述A select_expr can be given an alias using AS alias_name. The alias is used as the
expression's column name and can be used in GROUP BY, ORDER BY, or HAVING clauses.
别名不能在select_expr
或WHERE
子句中使用。
答案 2 :(得分:0)
使用AS
设置的别名用作表达式列。它不能用作变量,但可以再次用于引用该列。