mysql当前版本不支持“limit&in/all/any/some子查询”

q1qsirdb  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(472)

我有一张table
table1 o_id 作为 PK , host , b_id ```
o_id host b_id
9205 host1.abc.com null
9206 host2.abc.com null
9207 host3.abc.com null

---1000多行
我还有一张table
table2 `id` 作为 `PK` ,  `hostname` ,  `b_id` ```
id      hostname              o_id   ip
18356   host1                 null   10.10.10.10
18357   host2                 null   10.11.11.11
18358   host3                 null   10.12.12.12

---1000多行
现在,如果 hostname(excluding domain name) 表和表中的匹配项 ip 范围内的地址 ('10.10|10.11') ,然后我要更新这两个表,以便 table2.o_id = table1.o_id 以及 table1.b_id = table2.id ```
update table1 T1
inner join table2 T2 on T2.hostname = substring_index(T1.host, '.', 1)
set T2.o_id = T1.o_id ,
T1.b_id = T2.id
where T1.b_id IS NULL AND
T2.ip IN (select ip from table2 where ip regexp ('10.10|10.11')
limit 10);

我想更新一下 `o_id` 在第二张table上 `o_id` 在第一张table上。我也想更新一下 `b_id` 在第一个表中 `id` 在第二张table上。
在这里,我得到一个 `error` ```
Error Code: 1235. This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'

我正在使用mysql版本6.0

o2g1uqev

o2g1uqev1#

再做一次 join 而不是 in :

update table1 T1 inner join
       table2 T2 
       on T2.hostname = substring_index(T1.host, '.', 1) join
       (select distinct ip
        from table2
        where ip regexp ('10.10|10.11')
        limit 10
       ) t3
       on t2.ip = t3.ip
set T2.o_id = T1.o_id , 
    T1.b_id = T2.id
where T1.b_id IS NULL ;

相关问题