Mysql 在select中使用变量

Mysql 在select中使用变量,mysql,subquery,case,Mysql,Subquery,Case,我有一个这样的问题 SELECT ID, ... , (SELECT MAX(EndDate) FROM Projects) As NewestDate, (CASE WHEN (NewestDate > NOW()) THEN 'More Work is coming' ELSE 'Send Vendors to work' END) Message FROM SOME_TABLE i、 我试

我有一个这样的问题

SELECT ID, ... , 
       (SELECT MAX(EndDate) FROM Projects) As NewestDate,
       (CASE
           WHEN (NewestDate > NOW()) THEN 'More Work is coming'  
           ELSE 'Send Vendors to work' 
       END) Message
FROM SOME_TABLE
i、 我试图在一个案例中使用NewestDate的值。这可能吗?或者像这样的事情可能吗


直接谢谢不。你可以用同一句话两次:

SELECT ID, ... , 
       (SELECT MAX(EndDate) FROM Projects) As NewestDate,
       (CASE
           WHEN ((SELECT MAX(EndDate) FROM Projects) > NOW()) 
           THEN 'More Work is coming'  
           ELSE 'Send Vendors to work' 
       END) Message
FROM SOME_TABLE
如果要使用已计算的,请使用子查询:

select t.*,
    (
        case 
            when (NewestDate > NOW())
                then 'More Work is coming'
            else 'Send Vendors to work'
            end
        ) Message
from (
    select ID,
        ...,
        (
            select MAX(EndDate)
            from Projects
            ) as NewestDate
    from SOME_TABLE
    ) t;

你可以在最新的日期加入。这将比每一行的子查询更快

SELECT ID, ... , 
       nd.NewestDate,
       (CASE
           WHEN (nd.NewestDate > NOW()) THEN 'More Work is coming'  
           ELSE 'Send Vendors to work' 
       END) Message
FROM SOME_TABLE
JOIN (
    SELECT MAX(EndDate) AS NewestDate FROM Projects
) nd