解析MySQL中IN**RT INTO **LECT的使用

时间:2016.04.30 发布人:Loreh**ofscor

解析MySQL中IN**RT INTO **LECT的使用

已解决问题

谷歌Loreh**ofscor用户在2016.04.30提交了关于“修真世界解析MySQL中IN**RT INTO **LECT的使用”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2024-09-19T10:02:54。希望大家能够帮助她。

详细问题描述及疑问:期待您的答案,当代劳模,所有人都应该向你学习 !

希望以下的回答,能够帮助你。

第1个回答

用户名:qsap359  

1.语法介绍
有三张表a、b、c,现在需要从表b和表c中分别查几个字段的值插入到表a中对应的字段还乐粒缩要书。对于这种情况,可以使用如下的语句来实现:
IN**RTINTOdb1_name(field1,field2)**LECTfi来自eld1,field2FROMdb2_name

上面的语句比较适合两个表的**互插,如果多个表就不适应了。对于多个表,可以先将需要查询的字段J十距控配根OIN起来,然后组成一个视图后再**LECTFROM就可以了:

IN**RTINTOa(field1,field2)**LECT*FROM(问答**LECTb.f1,c.f2FROMbJOINc)AStb

其中f1是表b的字段,f2是表c的字段,通过JOIN查询就将分别来自表b和表c的字段进行了组合,然后再通过**LECT嵌套查询插入到表a中,这样就满足了这个场景了,如果需要不止2个表,那晶么可以多个JOIN的形式来组合字段。

2.语法错误注意
需要注意的是职改航电嵌套查询部分最后一定要有设置态把盟积尽量助四族表别名,如下:

**LECT*位护企再仍书水变密FROM(**LECTf1,f2FROMbJOINc)AStb

即最后的AStb是必须的(tb这个名称可以随意取),即指定一个别名。每个派生出来的新表都必须指定别名,否则在mysql中会报如下错误:

ERROR1248(42000):EveryderivedTABLEmusth**eitsownali职帮龙注武道as

另外,MySQL心转双项析中IN**RTINTO**LECT不能加VALUES宁果少报写十被进孩类,即不能写成如下形式:

IN**RTINTO期db1_name(field1,field2)VALUES**LECTfield1,field2FROMdb2_name

否则也会报错:Youh**eanerrorinyourSQLsyntax