选择查询更新时找不到记录

时间:2015-01-09 01:12:33

标签: mysql sql

我在这里遗漏了一些东西,希望有人可以指出我的错误。以下select语句按预期返回行。

 SELECT sku, releasedate FROM staging_product_dimensions WHERE TO_DAYS(`releasedate`) > TO_DAYS(NOW())-30 ;

然而,当我在更新语句中使用相同的where where条件时,没有找到记录。任何洞察原因?

 UPDATE staging_product t1 
 JOIN staging_product_dimensions t2 
         ON t1.sku = t2.sku
 SET t1.categories = CONCAT(t1.categories,';;','What\'s New')
 WHERE TO_DAYS(t2.releasedate) > TO_DAYS(NOW())-30 ;

1 个答案:

答案 0 :(得分:1)

此更新中没有任何行的原因有四个:

  1. 语法无效或代码未运行或未在正确的数据库上运行。
  2. where子句失败。
  3. join失败。
  4. 设置的值与原始值相同。
  5. 我正在打折(1),因为您似乎能够使用相同的列和表运行select查询。

    如果接下来的两个不是原因,那么第四个似乎是。只有当值为NULL时才会发生这种情况。您可以尝试使用此set子句:

    SET t1.categories = CONCAT(COALESCE(t1.categories, ''), ';;', 'What\'s New')