我可以在 mySQL 中添加带有条件的值吗?

Posted

技术标签:

【中文标题】我可以在 mySQL 中添加带有条件的值吗?【英文标题】:Can I add values with conditions in mySQL [duplicate] 【发布时间】:2020-10-21 23:01:53 【问题描述】:

我正在尝试将数值添加到“AuthDate”为“06/05/20”且“时间”为“1P -2P”的列。

我运行了以下查询:

update main
set calls = 2072
where authdate = '06/05/20'
and time = '1P - 2P';

*main = 表名 调用 = 列名

但我收到错误代码 1175 您正在使用安全更新模式

有人知道我为什么会收到错误消息吗?

【问题讨论】:

请给我们完整的错误信息。 【参考方案1】:

您的数据库或会话有option sql_safe_updates enabled。除其他外,这禁止 update 没有 where 子句,或者有 where 子句但列不是键(未编入索引)。即使有索引,但优化选择不使用它,查询也会中止。

这更像是一种防止初学者犯错的选项。如果您真的知道自己在做什么,则可以在会话级别禁用该选项:

set sql_safe_updates = 0;

旁注:我怀疑authdate = '06/05/20'的情况:

如果autdate 是类似date 的数据类型,那么您应该给它一个合法的日期字符串,例如:authdate = '2020-06-05'(或'2020-05-06'?)

如果它是一个字符串,那么...考虑将其存储为date;出于多种原因,将日期存储为字符串是不好的做法,应该避免

【讨论】:

成功了!正如您所提到的,authdate 当前存储为字符串,需要存储为日期。感谢您的帮助

以上是关于我可以在 mySQL 中添加带有条件的值吗?的主要内容,如果未能解决你的问题,请参考以下文章

MYSQL查一个字段中 多个值

房间 - 选择带有 IN 条件的查询?

c:when判断语句中可以写js或者JAVA的代码获取的值吗?

舍入值的条件格式

我可以为 PowerShell 中的参数指定条件默认值吗?

ThinkPHP中查询数据库where()中的条件必须包含主键值吗