MySQL:在SELECT中添加条件


MySQL: adding conditions in SELECT

我有一个巨大的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 ttitle,if (t;date_creation>= "'.$年。'-'.$月。"'-01"和 tdate_upload & lt;"。美元。"——"。(月+ 1美元)。'-01", tprice_paid, '0') = price_paidtdate_creation,if (t;date_creation>= "'.$年。'-'.$月。"'-01"和 tdate_upload & lt;"。美元。"——"。(月+ 1美元)。'-01", tdate_upload, ")作为date_uploadtable_name转换为 t其中 tdate_creation>= "'.$year.'-'.$month.'-01"还有 tdate_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