FROM子句中的表值函数 表值函数是一个类查询,它被投影为一个存储过程,并返回单个结果集。 表值函数是任何具有SqlProc TRUE的类查询。...在下面的示例中,类查询Sample.Person.ByName被投影为一个存储过程,因此可以用作表值函数: SELECT Name,DOB FROM Sample.SP_Sample_By_Name('...,"End of B data" } 表值函数只能在SELECT语句或DECLARE语句的FROM子句中使用。表值函数名可以用模式名限定,也可以用非限定名(没有模式名)限定;非限定名使用默认模式。...表值函数不能直接用于INSERT、UPDATE或DELETE语句。但是,可以为这些命令指定子查询,以指定表值函数。...SQL没有为表值函数定义EXTENTSIZE,也没有为表值函数列定义SELECTIVITY。 FROM子句中的子查询 可以在FROM子句中指定子查询。 这称为流子查询。
如果SELECT语句指定了ORDER BY和TOP子句,则作为“TOP”行的返回的记录将与ORDER BY子句中指定的顺序一致。 为例。...不能在ORDER BY子句中直接指定聚合函数; 尝试这样做会产生SQLCODE -73错误。 可以在ORDER BY子句中根据列别名或列号指定任何选择项,包括聚合函数、窗口函数或表达式。...下面的示例以与前一个示例相同的顺序返回相同的记录: SELECT Name,DOB FROM Sample.Person ORDER BY Home_State,Name 如果order -item不是指定表中现有的列名...ORDER BY子句可以指定表名或表别名作为ordering-item的一部分: SELECT P.Name AS People,E.Name As Employees FROM Sample.Person...它们不指向表本身中列的位置。 但是,可以按列号对SELECT *结果进行排序; 如果RowID是公共的,它就被计算为第1列,如果RowID是隐藏的,它就不被计算为第1列。
列别名在结果集中显示为列标题。指定列别名是可选的;始终提供默认值。列别名以指定的字母大小写显示;但是,当在ORDER BY子句中引用时,它不区分大小写。C别名必须是有效的标识符。...列别名与所有SQL标识符一样,不区分大小写。 其他SELECT子句中列别名的使用由查询语义处理顺序控制。 可以通过ORDER by子句中的列别名引用列。...不能在选择列表中的另一个选择项、DISTINCT BY子句、WHERE子句、GROUP BY子句或HAVING子句中引用列别名。 不能在JOIN操作的ON子句或USING子句中引用列别名。...子句 FROM table-ref子句指定一个或多个表、视图、表值函数或子查询。...查询不需要知道FROM子句中指定的表是分片的还是非分片的。 同一个查询可以访问分片表和非分片表。 查询可以包括分片表和非分片表之间的连接。 分片表使用CREATE table命令定义。
还可以用于insert、update、delete语句或其他子查询中。 子查询的组成 包含标准选择列表组件的标准select查询 包含一个或多个表或者视图名称的标准from子句。...子查询的语法规则 子查询的select查询总是使用圆括号括起来 不能包括compute或for.browse子句。 如果同时指定top子句,则可能只包括order by子句。...如果某个表只出现在子查询中而不出现在外部查询中,那么该表的列就无法包含在输出中。...子查询简单示例 下面示例以四个表为查询结果 SELECT a.id, a.title, b.content c.viewCount FROM post AS a,...( SELECT * FROM Person WHERE Person_Id = 100 --如果不存在Person_Id的记录,则子查询没有结果集返回,主语句不执行 )
无法在通过ODBC或JDBC网关连接链接的Informix表中存储的数据上创建视图。这是因为InterSystems IRIS查询转换对这种类型的查询使用FROM子句中的子查询。...有两种类型的WITH CHECK选项: WITH LOCAL CHECK选项意味着只检查INSERT或UPDATE语句中指定的视图的WHERE子句。...如果在INSERT或UPDATE语句中指定了%NOCHECK选项,则不检查WITH CHECK选项的有效性。...SQLCODE -137-视图的WITH CHECK OPTION验证在UPDATE中失败。只读视图只读视图是不能在其上执行INSERT,UPDATE和DELETE操作的视图。...为了节省第一行优化和有限排序优化的时间,可以将FROM子句子查询与TOP和%VID结合使用。在FROM子查询中指定上限(在本例中为10)作为TOP的值,而不是使用TOP ALL。
关键字as 是可选的,我们也可以这样写: from Cat cat子句中可以同时出现多个类, 其查询结果是产生一个笛卡儿积或产生跨表的连接。...Hibernate 可以在from子句中指定任何 Java 类或接口. 查询会返回继承了该类的所有持久化子类 的实例或返回声明了该接口的所有持久化类的实例。...一个被索引过的(有序的)集合的元素(arrays, lists, maps)可以在其他索引中被引用(只能在where子句中): from Order order where order.items[0...as msg group by usr.id, usr.name order by count(msg)如果你的数据库支持子选择,你可以在你的查询的where子句中为选择的大小(selection size...)指定一个条件: from User usr where size(usr.messages) >= 1如果你的数据库不支持子选择语句,使用下面的查询: select usr.id, usr.name
在JOIN操作的ON子句中确定哪些行与连接操作相关。 在UPDATE或DELETE语句的WHERE子句中,确定要修改哪些行。 WHERE CURRENT OF语句的AND子句中。...EXISTS (subquery) - 使用子查询测试指定表是否存在一行或多行。 BETWEEN x AND y - BETWEEN条件同时使用>=和子字符串的文字字符或包含已知序列中的多个已知子字符串的数据值时,请使用LIKE。LIKE使用其目标的排序规则进行字母大小写比较。...下面的例子是等价的: ClassMethod Predicates() { s q1 = "SELECT Name,Home_State FROM Sample.Person " s q2...WHERE FOR SOME %ELEMENT(t1.FavoriteColors) (%VALUE='purple') OR t2.Age < 65 因为这个限制取决于优化器如何使用索引,所以SQL只能在向表添加索引时强制执行这个限制
子查询必须用圆括号括起来。 WHERE子句可以使用=(内部连接)符号连接操作符指定两个表之间的显式连接。 WHERE子句可以使用箭头语法(- >)操作符在基表和来自另一个表的字段之间指定隐式连接。...不能通过列别名指定字段; 尝试这样做会产生SQLCODE -29错误。 但是,可以使用子查询来定义列别名,然后在WHERE子句中使用该别名。...例如: SELECT Name,Age,AvgAge FROM (SELECT Name,Age,AVG(Age) AS AvgAge FROM Sample.Person) WHERE Age 句中允许使用流字段: 流空测试:可以指定流字段IS null或流字段IS NOT null。...它对应的数据类型为VARBINARY,默认MAXLEN为32749。 因此,动态SQL不能在WHERE子句比较中使用%List数据。
还可以用于insert、update、delete语句或其他子查询中。 一、子查询的组成 1、包含标准选择列表组件的标准select查询。 ...5、任何可以使用表达式的地方都可以使用子查询,只要它返回的是单个值。 6、如果某个表只出现在子查询中二不出现在外部查询中,那么该表的列就无法包含在输出中。...= '孙权' ) 输出结果为: 四、in嵌套查询 in关键字用于where子句中用来判断查询的表达式是否在多个值的列表中。...子查询) 示例: select name from person where countryid > all --当countryid大于以下返回的所有id,此结果才为True,此结果才返回...exists ( SELECT * FROM Person WHERE Person_Id = 100 --如果不存在Person_Id的记录,则子查询没有结果集返回,主语句不执行
通常,选择项指的是FROM子句中指定的表中的一个字段。...选择项由下列一个或多个项组成,多个项之间用逗号分隔: 列名(字段名),带或不带表名别名: SELECT Name,Age FROM Sample.Person 字段名不区分大小写。...例如: SELECT $LISTTOSTRING(Home,'^') AS HomeAddress FROM Sample.Person 子查询。 子查询返回指定表中的单个列。...选项,则只能在SQL语句中调用用户提供的(外部)函数。...为所有记录返回相同值的选择项。 当所有select-items都不引用表数据时,FROM子句是可选的。 如果包含FROM子句,则指定的表必须存在。
描述 VALUES子句用于INSERT、UPDATE或INSERT or UPDATE语句中,以指定要插入到字段中的数据值。...VALUES子句中的元素依次对应于表名后面指定的字段。 注意,如果在VALUES子句中只指定了一个value元素,则没有必要将元素括在括号中。...为了省略表名后面的字段名列表,查询必须满足以下两个条件: values子句中指定的值的数量与表中字段的数量相同(不包括ID字段)。 values子句中的值按字段的内部列号顺序列出,从列2开始。...列1总是为系统生成的ID字段保留,而不是在VALUES子句中指定。...你也可以使用一个数组引用的UPDATE查询,目标多行,例如: &sql(UPDATE Employee VALUES :emp('profile',) WHERE Type
递归 CTE 可以极大地简化在 SELECT、INSERT、UPDATE、DELETE 或 CREATE VIEW 语句中运行递归查询所需的代码。...--运行 CTE 的语句为: SELECT FROM expression_name; 在使用CTE时应注意如下几点: CTE后面必须直接跟使用CTE的SQL语句(...如下面的SQL语句将无法正常使用CTE: with cr as ( select * from 表名 where 条件 ) --select * from person.CountryRegion...不能在 CTE_query_definition 中使用以下子句: COMPUTE 或 COMPUTE BY ORDER BY(除非指定了 TOP 子句) INTO 带有查询提示的 OPTION...with t_tree as ( select * from 表 where 字段 like @s ) select * from t_tree
不能按列别名指定字段或聚合函数;尝试这样做会生成SQLCODE-29错误。但是,可以使用子查询定义列别名,然后在HAVING子句中使用该别名。...聚合函数值是根据表中的所有行计算的: SELECT AVG(Age) FROM Sample.Person HAVING %ID<10 这与带有聚合函数的WHERE子句相反,后者返回一行。...这个字段引用可以是FROM子句中指定的任何表中的任何字段、使用隐式连接(箭头语法)引用的字段、%ID别名或星号(*)。 HAVING子句条件必须应用至少一个非聚合条件。...它还使用子查询返回表中所有行的平均年龄: SELECT Home_State,(SELECT AVG(Age) FROM Sample.Person) AS AvgAgeAllRecs,...此谓词只能在WHERE子句中使用。 谓词区分大小写 谓词使用为字段定义的排序规则类型。默认情况下,字符串数据类型字段使用SQLUPPER排序规则定义,该排序规则不区分大小写。
EXISTS 谓词 它使用子查询来测试子查询是否计算为空集。...该谓词的语法如下: FOR SOME (table [AS t-alias]) (fieldcondition) FOR SOME指定字段condition的值必须为true; 至少有一个字段值必须匹配指定的条件...Table可以是单个表,也可以是逗号分隔的表列表,每个表可以有一个表别名。 Fieldcondition为指定表中的一个或多个字段指定一个或多个条件。...当希望返回包含已知字面值子字符串的数据值,或在已知序列中包含多个已知子字符串时,请使用LIKE。 LIKE使用目标的排序规则进行字母大小写比较。...WHERE FOR SOME %ELEMENT(t1.FavoriteColors) (%VALUE='purple') OR t2.Age < 65 因为这个限制取决于优化器如何使用索引,所以SQL只能在向表添加索引时强制执行这个限制
可以指定一个用括号括起来的子查询。 AS t-alias - 可选—表名的别名。 必须是有效的标识符。 描述 FROM子句指定在SELECT语句中查询数据的一个或多个表(或视图或子查询)。...在SELECT语句中为多个表指定字段名时使用表名别名。 如果FROM子句中指定了两个(或更多)表,可以通过指定tablename来指明需要哪个表的字段。...为避免这种情况,建议在与外部联接一起使用%INORDER时,仅与ANSI样式的左外部联接或完全外部联接一起使用。 视图和表子查询按照它们在FROM子句中指定的顺序进行处理。...%NOMERGE 此可选关键字在子查询的FROM子句中指定。它指定编译器优化器应该禁止子查询到视图的转换。...%NOREDUCE 此可选关键字在流式子查询的FROM子句中指定-返回行的结果集的子查询,即封闭查询的FROM子句中的子查询。它指定编译器优化器应该禁止将子查询(或视图)合并到包含查询中。
GROUP BY可以在INSERT命令的SELECT子句中使用。 不能在UPDATE或DELETE命令中使用GROUP BY。...GROUP BY StreamField将流字段为NULL的记录数量减少为一条记录。 GROUP BY子句可以使用箭头语法(- >)操作符在非基表的表中指定字段。...在下面的例子中,COUNT聚合函数计算整个表中的行数: SELECT DISTINCT BY(Home_State) Home_State,COUNT(Home_State) FROM Sample.Person...为了计算整个表的聚合函数,而不是GROUP BY组,可以指定一个选择项子查询: SELECT Home_State,(SELECT COUNT(Home_State) FROM Sample.Person...*/ %ROWID 指定GROUP BY子句会导致基于游标的嵌入式SQL查询不设置%ROWID变量。即使GROUP BY不限制返回的行数,也不设置%ROWID。
时间戳记值将除去尾随空格,以小数秒为单位的尾随零和(如果没有小数秒的话)尾随的小数点。当SQLCODE = 0时,即返回有效行时,将设置INTO子句中指定的输出主机变量。...如果执行SELECT语句或FETCH语句导致SQLCODE = 100(没有数据与查询匹配),则INTO子句中指定的输出主机变量将设置为null(“”)。...用列号下标的主机变量如果FROM子句包含一个表,则可以为从该表中选择的字段指定带下标的主机变量;否则,可以为该表指定一个下标主机变量。例如,本地数组:myvar()。...主机变量下标数组可以用于INSERT,UPDATE或INSERT OR UPDATE语句VALUES子句中的输入。...这是因为在许多表(例如Sample.Person)中,可能存在隐藏的列。这些导致列号序列不连续。
from person.CountryRegion where Name like 'C%' ) 上面的查询语句使用了一个子查询。...where CountryRegionCode in (select * from @t) 虽然上面的SQL语句要比第一种方式更复杂,但却将子查询放在了表变量@t中,这样做将使SQL语句更容易维护,...CTE后面必须直接跟使用CTE的SQL语句(如select、insert、update等),否则,CTE将失效。...CTE 可以引用自身,也可以引用在同一 WITH 子句中预先定义的 CTE。不允许前向引用。...不能在 CTE_query_definition 中使用以下子句: (1)COMPUTE 或 COMPUTE BY (2)ORDER BY(除非指定了 TOP 子句) (3)INTO (4)带有查询提示的
比如: SELECT * FROM PERSON WHERE...String selectPerson = "SELECT * FROM PERSON WHERE ID=?"...子元素设置它的键值,默认值:未设置(unset)。...keyColumn (仅对 insert 和 update 有用)通过生成的键值设置表中的列名,这个设置仅在某些数据库(像 PostgreSQL)是必须的,当主键列不是表中的第一列的时候需要设置。...这样做更安全,更迅速,通常也是首选做法,不过有时你就是想直接在 SQL 语句中插入一个不转义的字符串。
除非另有说明,否则所有连接语法都在FROM子句中指定。 交叉连接是将第一个表的每一行与第二个表的每一行交叉的连接。 这将产生一个笛卡尔积,即一个具有大量数据重复的、逻辑上全面的大型表。...在指定单向外部连接时,在FROM子句中命名表的顺序非常重要。 对于LEFT OUTER JOIN,指定的第一个表是该连接的源表。...要执行此交叉连接,必须将链接表指定为子查询。 例如,FROM Sample。 Person,(SELECT * FROM Mylink.Person)。...ON子句只能引用ANSI关键字JOIN操作中显式指定的表。 在FROM子句中指定的其他表不能在ON子句中引用。 这将导致SQLCODE -23错误。...ON子句中引用的字段的排序规则类型应该与它在相应索引中的排序规则类型匹配。 排序规则类型不匹配可能导致索引不被使用。
领取专属 10元无门槛券
手把手带您无忧上云