插入…值(选择…)来自…)

插入…值(选择…)来自…)

大话西游666
浏览 583回答 4
4回答

呼啦一阵风

试着:INSERT INTO table1 ( column1 )SELECT  col1FROM    table2这是标准的ansi sql,应该在任何dbms上工作。它确实适用于:甲骨文MS SQL ServerMySQL波斯特格斯SQLite v3特拉塔DB2赛贝斯维蒂卡HSQLDB氢AWS红移SAP HANA

心有法竹

在多个值中只获得一个值INSERT在另一个表中,我在SQLite 3中完成了以下操作:INSERT INTO column_1 ( val_1, val_from_other_table ) VALUES('val_1', (SELECT  val_2 FROM table_2 WHERE val_2 = something))

PIPIONE

我看到的这两个答案在Informix中都很好,而且基本上都是标准SQL。也就是说,表示法:INSERT&nbsp;INTO&nbsp;target_table[(<column-list>)]&nbsp;SELECT&nbsp;...&nbsp;FROM&nbsp;...;使用Informix和所有DBMS都很好。(5年前或更多年前,MySQL并不总是支持这类东西;它现在对这种标准SQL语法有很好的支持,AFAIK在这种表示法上可以正常工作。)列列表是可选的,但按顺序指示目标列,因此SELECT结果的第一列将进入第一列,以此类推。如果没有列表,则选择结果的第一列进入目标表的第一列。系统之间的不同之处在于用于标识不同数据库中的表示法-对于数据库间操作(更不用说数据库间数据库管理系统),该标准没有什么可说的。使用Informix,您可以使用以下符号来标识表:[dbase[@server]:][owner.]table也就是说,您可以指定一个数据库,如果数据库不在当前服务器中,则可以选择标识承载该数据库的服务器,然后是可选的所有者点,最后是实际的表名。SQL标准使用术语模式来表示Informix所称的所有者。因此,在Informix中,下列任何一个符号都可以识别一个表:table"owner".tabledbase:tabledbase:owner.tabledbase@server:tabledbase@server:owner.table所有者一般不需要被引用;但是,如果您确实使用了引号,则需要将所有者名拼写正确-它会区分大小写。即:someone.table"someone".tableSOMEONE.table都能识别出同一张表。使用Informix,模式ANSI数据库有一个轻微的复杂性,其中所有者名称通常转换为大写(Informix是例外)。也就是说,在模式ANSI数据库(不常用)中,您可以编写:CREATE&nbsp;TABLE&nbsp;someone.table&nbsp;(&nbsp;...&nbsp;)系统目录中的所有者名称将是“某人”,而不是“某人”。如果将所有者名称括在双引号中,则它的作用类似于分隔标识符。使用标准SQL,可以在许多地方使用分隔标识符。使用Informix,您可以只在所有者名称周围使用它们-在其他上下文中,Informix将单引号和双引号字符串视为字符串,而不是将单引号字符串和双引号字符串分隔为分隔标识符。(当然,为了完整起见,有一个环境变量DELIMIDENT,它可以被设置为任何值,但Y是最安全的,它表明双引号总是环绕分隔标识符,单引号总是围绕字符串。)请注意,MSSQLServer设法使用方括号中的[分隔标识符]。在我看来,这看起来很奇怪,而且肯定不是SQL标准的一部分。
打开App,查看更多内容
随时随地看视频慕课网APP