在返回结果之前更改mysql字段的值

在返回结果之前更改mysql字段的值,mysql,sql,date,select,sql-update,Mysql,Sql,Date,Select,Sql Update,我通常在代码中处理这个问题,只是想检查是否可以直接在查询中完成 e、 g情景 TABLE : PRODUCTS ProductID |OnPromotion |PromotionEndDate 1 Y 31-12-2014 2 Y 20-10-2014 3 Y 31-12-2014 在上述场景中,如果希望获得所有项目的列表,则 对于PromotionE

我通常在代码中处理这个问题,只是想检查是否可以直接在查询中完成

e、 g情景

TABLE : PRODUCTS
ProductID  |OnPromotion   |PromotionEndDate
1           Y              31-12-2014
2           Y              20-10-2014
3           Y              31-12-2014
在上述场景中,如果希望获得所有项目的列表,则 对于PromotionEndDate小于curdate()的项目,应将OnPromotion字段更改为“N” 然后为结果服务。这在mysql中可能吗?

试试这个:

首先更新表中的数据,然后选择所需数据

UPDATE PRODUCTS SET OnPromotion = 'N' WHERE PromotionEndDate < CURRENT_DATE();
SELECT * FROM PRODUCTS
updateproducts SET on promotion='N'其中PromotionEndDate
试试这个:

SELECT
    ProductID,
    (
        CASE 
            WHEN PromotionEndDate < CURRENT_DATE()
            THEN 'N'
            ELSE OnPromotion
        END
    )AS OnPromotion,
    PromotionEndDate
FROM
    PRODUCTS
选择
ProductID,
(
案例
促销结束日期<当前日期()时
然后
其他关于晋升的问题
结束
)作为一种晋升,
促销结束日期
从…起
产品

您可以运行
更新
然后
选择
。可以在两个查询中做一些事情。是的,MySQL有
如果。。。ELSE
clausei如果你的意思是“更新select子句中的值”,那么答案是否定的。你需要一个存储过程,或者一次更新一次select来完成。你真的想更改存储在表中的值,还是只在查询中返回一个不同的值?哇,这很有效,非常聪明!将在3分钟内选择