Timezones
---------
-AreaCode varchar
-Timezone varchar
Contacts
--------
-Phone varchar
-Timezone varchar
除联系人表格中的Timezone
外,其他所有内容都已填充,因此我想查找每个电话号码的时区并更新联系人。这是我尝试做的,但是MySQL
给出了
错误1242子查询返回多行
对于每个时区(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');
答案 0 :(得分:2)
您的子查询返回多行。只需将“=”替换为“IN”即可解决此问题:
update contacts
set contacts.timezone = '-1'
where left(contacts.phone,3) in (Select timezones.areacode
from timezones
where timezones.timezone = '-1');
答案 1 :(得分:0)
尝试对更新或子查询进行内部联接:
update contacts
set contacts.timezone = '-1'
where left(contacts.phone,3) in (Select timezones.areacode
from timezones
where timezones.timezone = '-1');
答案 2 :(得分:0)
更改以下部分: ....
where left(...) in (select ...... )
答案 3 :(得分:0)
问题是,时区中有多于一行有t imezone column = '-1'
您可以在此使用Join
update contacts join timezones on left(contacts.phone,3) = timezones.areacode and timezones.timezone = '-1'
set contacts.timezone = '-1';
它会将isacodes与手机匹配,在这种情况下会更新为'-1'