首页 数据库,菜狗日记

是这样的,那天需要写个sql,将表table_1的b(alaclineend_id)列批量更新成table_2的b(line_id)列,并且table_1和table_2的a(id)列一一对应
大概表里的数据如下:
表一:
微信图片_20230316102217.png

表二:
微信图片_20230316102309.png

需求:将table_1的ALACLINEEND_ID更新成table_2的LINE_ID,并且要求table_1的id与table_2的id一一对应。
编写如下sql执行后发现报错:【-4097: 单行子查询返回多行】
微信图片_20230316102533.png

这里就发现自己的辣鸡之处,因为table_2的id有重复,所以会报错单行子查询返回多行,然后更改sql,将sql里的select语句加上top 1,或者在select子查询最后加上limit 1就可以执行了。
如下为执行结果和table_1数据填充的情况:
微信图片_20230316102833.png

微信图片_20230316102937.png

说明:
1.如果table_2中的id和line_id一一对应并且没有重复数据,执行select语句是不用加top 1 或者limit 1的。
2.如果table_2中的id和line_id有重复并且一个id对应多个line_id的话,就算加了top 1 或者limit 1 执行会造成更新结果不准确,更新规则都会以一地个匹配到的id—>imie_id为准。


文章评论