我正在 Jetbrains 的 DataGrip 中运行这些查询
因此,第一个查询是为了重置 snapchat 的进度,其中 snap_username = '0'。我运行它,它显示 281 条记录受到影响,这很好吗?没有。
UPDATE cache_items SET snap_username = NULL AND snap_processed_at = NULL AND snap_approved_at = NULL AND snap_result = 'waiting' WHERE LENGTH(snap_username) > 0
AND snap_username = '0';
在多次运行第一个查询后,这个查询仍然返回原始的 281 条记录,每次都显示 281 行受到影响。
SELECT item, description, snap_username FROM cache_items WHERE LENGTH(snap_username) > 0
AND snap_username = '0';
奇怪的是,我不确定它最初是如何变成 0 的 - 我猜这是我的播种者之一搞砸了。
snap_username 是 varchar 255 数据类型。
最佳答案
我想你想要:
UPDATE cache_items
SET snap_username = NULL,
snap_processed_at = null,
snap_approved_at = null,
snap_result = 'waiting'
WHERE LENGTH(snap_username) > 0 AND snap_username = '0';
请注意,AND
被 ,
替换。
您的代码被解析为:
set snap_username = (NULL AND snap_processed_at = null AND snap_approved_at = null AND snap_result = 'waiting')
关于mysql - SQL 更新语句不适用于 281 条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59164843/