首页 / 知识
关于sql:插入…值(SELECT … FROM …)
2023-04-13 02:42:00

Insert into … values ( SELECT … FROM … )我试图使用另一个表的输入来创建一个表。尽管对于许多数据库引擎来说这是完全可行的,但我似乎总是很难记住当时的 是否有一个来自SQL标准(例如,SQL-92)的银弹语法可以让我插入值而不必担心底层数据库? 尝试:
这是标准的ANSI SQL,应该在任何DBMS上工作。 它绝对适用于:
@shadow_x99:应该可以,您也可以有多个列和其他数据:
号 编辑:我应该提到,我只在Access、SQL 2000/2005/Express、MySQL和PostgreSQL中使用了这种语法,所以应该介绍这些语法。一位评论人士指出,它将与sqlite3一起工作。 为了从另一个表中仅获取多值
我看到的这两个答案在Informix中都特别有效,基本上都是标准的SQL。也就是说,符号:
使用Informix和所有DBMS都很好。(大约5年前,MySQL并不总是支持这种类型的东西;现在它已经很好地支持这种标准的SQL语法,而且,在这个符号上,它可以正常工作。)列列表是可选的,但按顺序指示目标列,因此选择结果的第一列将进入第一列列出的列等。如果没有列列表,则选择结果的第一列将进入目标表的第一列。 不同系统之间的区别在于用于标识不同数据库中表的符号——标准中没有关于数据库间(更不用说数据库间)操作的内容。使用Informix,可以使用以下符号来标识表:
。 也就是说,您可以指定一个数据库,如果该数据库不在当前服务器中,您可以选择标识承载该数据库的服务器,然后指定可选的所有者、点,最后指定实际的表名。SQL标准使用术语模式来表示Informix调用的所有者。因此,在Informix中,以下任何符号都可以标识表:
通常不需要引用所有者;但是,如果确实使用了引号,则需要正确拼写所有者名称-它会区分大小写。即:
。 所有这些都标识同一个表。对于Informix,模式ansi数据库有一个轻微的复杂性,其中所有者名称通常转换为大写(Informix是例外)。也就是说,在模式ansi数据库(不常用)中,您可以编写:
。 系统目录中的所有者名称应该是"某人",而不是"某人"。如果您将所有者名称用双引号括起来,它的作用就像一个分隔标识符。使用标准SQL,分隔标识符可以在许多地方使用。使用Informix,您只能在所有者名称周围使用它们——在其他上下文中,Informix将单引号和双引号字符串都视为字符串,而不是将单引号字符串分隔为字符串,将双引号字符串分隔为分隔标识符。(当然,为了完整性,有一个环境变量delimident,可以设置为任何值,但y最安全,它表示双引号始终围绕分隔标识符,单引号始终围绕字符串。) 注意,MS SQL Server设法使用括在方括号中的[分隔标识符]。我觉得这很奇怪,而且肯定不是SQL标准的一部分。 大多数数据库遵循基本语法,
我使用的每个数据库都遵循这种语法,即 要在第一个答案中添加一些内容,当我们只需要来自另一个表的少数记录(在本例中,只有一个)时:
号 如果要为 假设表1有两列。此查询应该有效:
。 这不起作用(未指定
我正在使用MS SQL Server。我不知道其他RDM是如何工作的。 不使用
号 这是另一个使用值和select的示例:
表列序列已知时的简单插入:
。 简单插入说明列:
。 当表(表2)的选定列数等于插入表(表1)时进行大容量插入
大容量插入当您只想插入到表(表1)的所需列时:
。 下面介绍如何从多个表中插入。这个特殊的例子是在多对多场景中有一个映射表:
号 (我知道匹配学生的名字可能会返回一个以上的值,但你明白了。当ID是标识列且未知时,必须在ID之外的其他对象上进行匹配。) 下面是另一个使用多个表获取源的示例:
号 这适用于所有DBMS 如果要使用
号 这对我很有用:
。 这句话和甲骨文的有点不同。 对于Microsoft SQL Server,我建议您学习解释msdn上提供的语法。使用谷歌,查找语法比以往任何时候都容易。 对于这种特殊情况,请尝试
号 第一个结果是http://msdn.microsoft.com/en-us/library/ms174335.aspx 如果您发现很难解释页面顶部给出的语法,请向下滚动到示例("使用select和execute选项插入其他表中的数据")。
这应该适用于任何其他可用的RDBMS。记住所有产品的语法是没有意义的。 我实际上更喜欢SQL Server 2008中的以下内容:
号 它消除了添加insert()集的步骤,只需选择表中的值。 只需使用括号将select子句插入insert。例如:
。 看起来不错,但只有在tmp不存在(创建并填充)时才有效。(SQL服务器) 要插入现有的tmp表,请执行以下操作:
号 从任何其他表插入多个记录的最佳方法。
号
号 使用select子查询插入到的两种方法。 1。使用Select子查询返回一行结果的方法。
。 在这种情况下,它假定select子查询仅根据where条件或SQL聚合函数(如sum、max、avg等)返回一行结果,否则将引发错误。 2。使用Select子查询返回多行结果的方法。
号 第二种方法适用于这两种情况。 如果执行"插入值"路径以插入多行,请确保使用括号将值分隔到集合中,因此:
号 否则,mysql对象"列计数与第1行的值计数不匹配",当您最终确定如何处理它时,您将编写一篇普通的文章。 |
最新内容
相关内容
Python 模块之输入不可见的密码
Python 模块之输入不可见的密码,密码,系统,情况,公共,位置,信息,电子,网上,认证,培训,密码对程序员来说尤其重要。你不应该在不加密的情况下Python语法编程
Python语法编程,代码,平台,环境,语言,工作,灵活,人员,培训,机器,指令,1,什么是编程?为什么要编程?答:编程是个动词,编程就等于写代码,那么写代码找不出python的语法错误该如何解决
找不出python的语法错误该如何解决?,代码,分析,项目,培训,错误,语法错误,结果,文件,语法,环节,python是一种解释型语言,在开发中,没有了编译这python如何实现手动输入文字
python如何实现手动输入文字,培训,表达式,字符串,函数,整数,示例,语法,以上,参数,文字,python中可以使用input()函数接收用户输入的文字。函python如何输入序列
python如何输入序列,名称,数据,合法,培训,列表,函数,赋值,序列,变量,语法,Python创建列表在Python中,创建列表的方法可分为2种,下面分别进行介python中怎样输入两行
python中怎样输入两行,异常,环境,培训,语句,函数,机制,结束,空行,文件名,这不,python中的Input()函数在输入时,遇到回车符,那么一次输入就结束python怎么输入多变量
python怎么输入多变量,数字,培训,字符串,逗号,空格,间隔,数值,以上,更多,内容, Python同时输入多个值 1.同时输入多个字符串,字符串python怎么定义用户输入
python怎么定义用户输入,培训,字符串,整数,类型,用户,文本,定义,文档,小数点,位数,python中获取用户输入的方法如下:整数输入#!/usr/bin/pythopython如何输入坐标
python如何输入坐标,对比,培训,坐标,直角坐标,表示,增减,字典,下面,方向,以上,python利用元组、字典可以表示坐标增减,具体做法为:defchange_dipython如何手动输入时间
python如何手动输入时间,时间,培训,单位,项目,平台,设计,日期,模块,新和,函数,python是一种跨平台的计算机程序设计语言。是一种面向对象的动python怎么往列表里插入元素
python怎么往列表里插入元素,培训,元素,表里,末尾,数值,索引,以上,参数,结果,更多,python中append用来向list的末尾追加单个元素,如果增加的元如何用python输入数字
如何用python输入数字,数字,培训,整数,类型,函数,以上,时候,文档,发现,结果,开始使用python的时候想用input输入一个整数:a=input(“请输入一