我有一个巨大的SELECT,我需要做一些条件。
,
SELECT `t`.`title`, `t`.`price_paid`, `t`.`date_creation`, `t`.`date_upload`
FROM `table_name` AS `t`
WHERE `t`.`date_creation` >= "'.$year.'-'.$month.'-01"
AND `t`.`date_creation` < "'.$year.'-'.($month+1).'-01"
我在PHP中声明$year和$month的值,我希望其余的在MYSQL中制作(我有很强的理由,如果需要,我可以详细说明)
我需要的是使date_upload
为空(null或0)和price
也为空,如果date_upload不是来自与t
相同的间隔。date_creation
别这么算约会。如果你是12月,你会要求MySQL在高端查找2013-13-01
。使用实际的mysql日期:
SELECT ...
WHERE t_date_creation BETWEEN (now() - INTERVAL 1 MONTH) AND (now() + INTERVAL 1 MONTH)
对于您的查询,它将是一个UPDATE查询:
UPDATE yourtable
SET date_upload = NULL, price = NULL
WHERE date_restriction_logic_here.
目前的解决方案似乎是:
-> MySQL在Select查询中嵌套If
之类的IF(condition, value IF true, value IF false)
SELECT
t
。title
,if (t
;date_creation
>= "'.$年。'-'.$月。"'-01"和t
。date_upload
& lt;"。美元。"——"。(月+ 1美元)。'-01",t
。price_paid
, '0') =price_paid
,t
。date_creation
,if (t
;date_creation
>= "'.$年。'-'.$月。"'-01"和t
。date_upload
& lt;"。美元。"——"。(月+ 1美元)。'-01",t
。date_upload
, ")作为date_upload
从table_name
转换为t
其中t
。date_creation
>= "'.$year.'-'.$month.'-01"还有t
。date_creation
& lt;"。美元。"——"。(月+ 1美元)。"-01"
和其他解决方案似乎是控制流函数
CASE value WHEN [compare_value] THEN result [WHEN [compare_value] THEN result…][ELSE result] END
在http://komlenic.com/254/mysql-nested-if-in-select-queries/上找到http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html