mysql - SQL 更新语句不适用于 281 条记录

标签 mysql sql

我正在 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/

相关文章:

php - 在我的新代码中对非对象执行 bind_param() 函数

sql - 如何找出SQL Server执行计划中使用的中间值代表什么

mysql - Hibernate SQL QUERY,mysql 中的 TEXT 数据类型问题

mysql - 如何将函数的结果存储到变量中?

mysql - 添加自定义行号

php - 从MySQL获取最低用户总数和最高用户总数

sql - 数据库中聊天消息和评论的典型长度是多少?

sql - 在 MySQL : How to pass a table name as stored procedure and/or function argument?

mysql - DBGrid - OnCellClick 和 OnDblClick,返回包含单元格/列值的表单/TBMemo

c# - Sql 事务中的隔离级别