0行受MySQL影响的UPDATE语句

时间:2017-05-21 02:28:28

标签: mysql sql

您好我有一个更新声明,我试图将meta_key数量的数量从3到3之间的任何数量(meta_value)减少,每当我执行此操作时,我得到“0行受影响”。

UPDATE usermeta 
INNER JOIN cov on cov.user_id = usermeta.user_id 
SET usermeta.meta_value = '3'
WHERE usermeta.meta_key = 'quantity' 
  AND usermeta.meta_value > '3'
  AND cov.end_date = '2017-05-18'
-- this is the query to see the rows I want changed   
SELECT cov.*, usermeta.meta_value
FROM cov
 INNER JOIN usermeta
    ON     cove.user_id = usermeta.user_id
       AND meta_key = 'quantity'
WHERE cov.end_date = '2017-05-18' and usermeta.meta_value > 3
ORDER BY end_date

谁能看到我做错了什么?谢谢!

3 个答案:

答案 0 :(得分:1)

'3'3之间存在差异。所以,我会从:

开始
UPDATE usermeta um INNER JOIN
       cov 
       ON cov.user_id = um.user_id 
    SET um.meta_value = '3'
WHERE um.meta_key = 'quantity' AND
      um.meta_value + 0 > 3 AND
      cov.end_date = '2017-05-18';

答案 1 :(得分:0)

我没有看到任何与代码有关的问题。您是否确保实际拥有usermeta表中usermeta.meta_value字段中>的值? 3?第二件事是,你的字段meta_value和INT数据类型?如果是,那么你需要' 3'这里。

UPDATE usermeta um INNER JOIN cov 
ON cov.user_id = um.user_id 
SET um.meta_value = 3
WHERE um.meta_key = 'quantity' AND
um.meta_value > 3 AND
cov.end_date = '2017-05-18';

如果这对您有用,请告诉我。

答案 2 :(得分:0)

我的更新问题不在于代码。这是因为userid列中存在重复的id。指向无效用户并将其添加到WHERE子句中的NOT IN的引脚修复了我的问题。