您好我有一个更新声明,我试图将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
谁能看到我做错了什么?谢谢!
答案 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的引脚修复了我的问题。