当前位置: 首页 > 知识库问答 >
问题:

在MySQL的“where”子句中使用主键以外的任何条件

朱硕
2023-03-14

我正在MySQL上练习,我对“哪里”子句有疑问,为什么在MySQL中“where”后面的条件应该在主键中?如果我放了除主键以外的任何条件,那将是一个错误!

例如,我有一个名为“students”的表,表中有4列,第一列是“stuid”,它是主键,还有“stuname”、“classure”、“stuage”,这些是我不能说的其他列

< code >更新学生集stuname = ' Sarah ' where classroom = 46;

这是错误:

“错误代码:1175。您正在使用安全更新模式,并且您尝试更新没有使用KEY列的WHERE的表要禁用安全模式,请切换首选项中的选项-

我试着按照消息所说的去做,但我不明白“重新连接”的部分。

因此:我在mac上使用MySQL

共有1个答案

汪欣德
2023-03-14

我们可以在更新时使用任何密钥。问题可能与您使用的IDE有关。请指定您使用的IDE和MySQL版本。或者谷歌关于关闭IDE/MySQL中的安全模式。

什么是安全模式?

它用于防止不必要/意外更新表中的一堆行。(具有非唯一键的where子句)

以打开安全模式,请尝试

SET SQL_SAFE_UPDATES = 0;

使用后打开安全模式更安全。

SET SQL_SAFE_UPDATES = 1;
 类似资料:
  • 我搜索了互联网、文档和stackoverflow上的大量内容,但都没有结果。我使用MySQL Workbench尝试在特定列的末尾连接一些附加值 我的原始代码是: 但是,这引发了一个错误“错误代码:1093。您不能在From子句中指定目标表“翻译”以进行更新”。我在stackoverflow上搜索并将我的代码更改为: 现在会抛出“错误代码:1175。您正在使用安全更新模式,并且您尝试更新一个没有使

  • 问题内容: 我需要在WHERE子句中使用别名,但它一直告诉我它的未知列。有什么办法可以解决这个问题?我需要选择评级高于x的记录。评分的计算方法如下: 问题答案: 您可以使用HAVING子句,该子句 可以 看到别名,例如 但是在where子句中,您需要重复您的表达式,例如 但!并非所有的表达式都被允许-使用像SUM这样的聚合函数将不起作用,在这种情况下,您将需要使用HAVING子句。 从MySQL手

  • 问题内容: 假设我有这张桌子 我想返回第一行,其中所有先前现金的总和大于某个值: 因此,例如,如果我要返回第一行,其中所有先前现金的总和都大于500,则应返回到第3行 如何使用mysql语句执行此操作? 使用 不起作用 问题答案: 您只能在HAVING子句中使用聚合进行比较: 该子句要求您定义GROUP BY子句。 要获得第一行,其中所有先前现金的总和都大于某个值,请使用: 由于聚合函数发生在子查

  • 问题内容: 我想搜索我的表,其中有一列名字和一列姓氏。我目前接受来自某个字段的搜索字词,并将其与两列进行比较,一次 这对于单个单词搜索词可以正常工作,但结果集包含名称为“ Larry”的所有人。但是,如果有人输入名字然后输入空格,然后输入姓氏,我希望搜索结果更窄。我已经尝试了以下方法,但没有成功。 有什么建议吗? 编辑: 我正在测试的名称是“拉里·史密斯”。数据库将“ Larry”存储在“ fir

  • 问题内容: 假设我想要一个JasperReport,它可以让用户根据需要过滤日期。SQL如下: 现在,如果他们没有传递日期,我不想按某个日期进行过滤。我发现了人们使用的以下错误信息: 并使用以下默认值定义参数: 这无法正常工作,因为不会以我的SQL Server可以理解的格式输出日期。我想让条件条件仍然与jdbc驱动程序一起使用一条准备好的语句,并将参数扔进去,我只希望准备好的语句依赖于该参数是否

  • 如何将行号用作where子句的一部分? 我有,假设,25个数据,我只想得到前10行或得到从11到20的行。 如何使用行号?我无法执行下面的查询 更新:问题是,在我的where子句中,row_number在表UPDATE2:Thanks Guys中是未知的!不管怎样,我找到了这个。选择行号=行号的位置