mysql - SQL 更新,子查询返回多行

标签 mysql subquery sql-update

Timezones
---------
-AreaCode varchar
-Timezone varchar

Contacts
--------
-Phone    varchar
-Timezone varchar

Contacts 表中除 Timezone 外的所有内容均已填充,因此我想查找每个电话号码的时区并更新联系人。这是我尝试做的,但是 MySQL 给出了

Error 1242 Subquery returns more than one row

对于每个时区(0、-1、-2、-3、-4、-5),我执行此更新:

update contacts 
set contacts.timezone = '-1' 
where left(contacts.phone,3) = (Select timezones.areacode 
                                from timezones 
                                where timezones.timezone = '-1');

最佳答案

您的子查询返回多行。只需将“=”替换为“IN”即可处理此问题:

update contacts 
set contacts.timezone = '-1' 
where left(contacts.phone,3) in (Select timezones.areacode 
                                from timezones 
                                where timezones.timezone = '-1');

关于mysql - SQL 更新,子查询返回多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12163571/

相关文章:

php - 如何使用 php 降低图像质量/图像大小,我们尝试过但无法解决?

linq - Linq to NHibernate 中的子查询

MySQL 子查询从另一个表中进行 SELECT

mysql - 如何改进/简化具有大量子查询的查询?

MySQL:根据一行的值获取多行

mysql - 连接表格以显示正在进行和已完成的类(class)

java - JDBC 显示语法错误,但查询在 HeidiSQL 中运行正常

mysql - phpMyAdmin 中的更新语句不起作用

SQL 更新错误。 FK 冲突

PostgreSQL 重用更新计算