我有一个表table1
,其列o_id
为PK
,ipaddress
,b_id
o_id ip b_id
9205 10.10.10.10 null
9206 10.10.10.11 null
9207 10.10.10.12 null
---超过1000行
我有另一张表table2
id
,其中的列为PK
,ipaddress
,b_id
,env
id ip o_id env
18356 10.10.10.10 null dev
18357 10.10.10.11 null prod
18358 10.10.10.12 null qa
---超过1000行
现在,如果ipaddress
在两个表和table2.env IN ('dev', 'qa')
中匹配,那么我想要更新这两个表,table2.o_id = table1.o_id
和table1.b_id = table2.id
在这里,我想要从第一个表格中的o_id
更新第二个表格中的o_id
。
我还想在第二个表中的b_id
更新第一个表中的id
。
我写了下面的查询。
update table1 t1
inner join table2 t2 on t1.ip = t2.ip
set t1.b_id = t2.id,
t2.o_id = t1.o_id
where t2.env IN ('dev', 'qa')
limit 2
我收到错误incorrect usage of limit
。
我想先只更新2行,看看它看起来如何?我不想一次更新整个表格
答案 0 :(得分:0)
你无法做到你想要的。 MySQL不允许limit
加入。您可以使用子查询来限制行数:
update table1 t1 inner join
table2 t2
on t1.ip = t2.ip join
(select ip
from table1 t1
limit 2
) t1ip
on t1.ip = t1ip.ip
set t1.b_id = t2.id,
t2.o_id = t1.o_id
where t2.env IN ('dev', 'qa')
答案 1 :(得分:0)
您无法在更新查询中直接使用Limit
。你应该尝试类似的东西;
update table1 set col1 = '' where b_id IN (
select t1.b_id table1 t1 from
inner join table2 t2 on t1.ip = t2.ip
set t1.b_id = t2.id,
t2.o_id = t1.o_id
where t2.env IN ('dev', 'qa')
limit 2)