0

我有一个巨大的 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

4

2 回答 2

2

不要那样做日期数学。2013-13-01如果你在 12 月,你会要求 MySQL在高端寻找。使用实际的 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.
于 2013-04-09T18:33:27.783 回答
0

到目前为止的解决方案似乎是:

-> MySQL 在选择查询中嵌套“If”

IF(条件,真值,假值)

就像是

选择ttitle, 如果 ( t. date_creation>= "'.$year.'-'.$month.'-01" AND t. date_upload< "'.$year.'-'.($month+1).'-01" , t. price_paid, '0') 作为price_paid, t. date_creation, 如果 ( t. date_creation>= "'.$year.'-'.$month.'-01" AND t. date_upload< "'.$year.'-'.($month+1).'-01" , t. date_upload, ' ' )date_upload 从哪里来 。>= "'.$year.'-'.$month.'-01" AND . < "'.$year.'-'.($month+1).'-01"table_namettdate_creationtdate_creation

和其他解决方案似乎是控制流功能

CASE 值 WHEN [compare_value] THEN 结果 [WHEN [compare_value] THEN 结果 ...] [ELSE 结果] END

在http://komlenic.com/254/mysql-nested-if-in-select-queries/ 上找到http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html

于 2013-04-10T15:44:16.737 回答