ansi-sql相关内容
如何在不支持它们的SQL实现(例如Microsoft SQL Server 2008R2)中重写包含标准IS DISTINCT FROM和IS NOT DISTINCT FROM运算符的表达式? 解决方案 IS DISTINCT FROM谓词是作为SQL:1999的功能T151引入的,其可读性为IS NOT DISTINCT FROM的添加是作为SQL:2003的功能T152的.这些谓词的
..
假设我具有以下聚合函数: AGG1 AGG2 AGG3 AGG4 是否可以编写有效的SQL (以db不可知方式): SELECT [COL1,COL2 ....],AGG1(param1), AGG2(param2)来自[某些表] 其中[某些标准] 具有AGG3(param2)≥-1和AGG4(param4)
..
我在Postgres 9.1数据库中具有以下表结构,但是理想的解决方案应该是与数据库无关的: 表:users | id |用户名| | 1 |一个| | 2 |两个| | 3 |三| 表:项目 | id | userid |商品名|创建的| | 1 | 1 | a |时间戳记| | 2 | 1 | b |时间戳记| | 3 | 1 | c |时间戳记|
..
我正在使用ORM(sqlalchemy)从PG数据库中获取数据。我想避免在手工制作的SQL语句中指定所有表列名称*。 到目前为止,我的假设是返回的列按DDL语句的顺序排列用于创建数据库表。到目前为止,这是可行的-但我想知道这是否只是运气,还是在(ANSI)SQL规范中专门解决了这个问题。 即ANSI SQL(因此可能是数据库)是否保证 SELECT * 语句中返回的列顺序? 我将
..
最近我问了一个问题对于SQL Server(2005+)和Oracle(11g +),回答了该问题 很明显,sql-server实现相当有限,Oracle实现产生奇怪的列名. 这些独立的解决方案还是基于某些ANSI标准的解决方案? 解决方案 它不在 ANSI-92 . 除草稿 SQL: 2003 .也没提到 注意:没有提及数据透视表和交叉表
..
我有一个表,其中包含需要创建的动态SQL视图的列表 SEEDING_TABLE ------------- KEYVALUE|VIEW_TO_BE_CREATED|FROMTABLE|NOOFCOLS 1|A|A1|3 2|B|B1|4 3|C|C1|5 另一个表,其中包含上述种子表的实际列名 ORDERCOLS_FORVIEW KEYVALUE|FROMTABLE|COLSAVA
..
我必须用Oracle外连接表示法(+)将许多SQL查询重写为ANSI SQL.我读了一些有关Oracle语法的内容,但是有非常简单的示例.该查询应如何以ANSI表示法显示? SELECT * FROM realtion r1, relation r2 WHERE r1.relno=r2.relno(+) AND r.id(+)=10 或 SELECT * FROM Mail M,
..
我正在尝试转换一些Oracle SQL查询以在理论上与任何SQL数据库一起使用.一些查询本质上是分层的,是使用CONNECT BY编写的. 是否有标准的SQL替代Oracle的START WITH ... CONNECT BY语法?还是我应该遵循一些建议的过程来转换分层查询? 解决方案 在Oracle 11gR2中,它们支持通用表表达式中的递归(大多数Oracle人将其称为子查询因子
..
我有一个复杂的非ansi查询,我需要在ansi查询中进行转换. 所以我将举一个小例子来描述我的问题 输入查询 SELECT a.name, a.empno, b.loc, c.inr FROM a, b, c WHERE a.deptno = b.deptno(+)
..
是否存在与Oracle的DECODE函数等效的ANSI SQL? Oracle的解码功能是SQL中的IF-THEN-ELSE构造. 解决方案 CASE表达式是ANSI SQL方法,其中有两个变体,“简单"和“搜索": 1)简单的CASE表达式: CASE col WHEN 1 THEN 'One' WHEN 2 THEN 'Two' E
..
这是我在Netezza中无法使用的查询: UPDATE TABLE1 A SET A.COL1= (SELECT DISTINCT B.COL1 FROM TABLE2 B WHERE B.ID= A.ID AND B.DeptID=104) WHERE A.DeptID=3 如何重新编写此查询? 请帮忙. 解决方案 UPDATE TABLE1 A SET A.COL1 = B.
..
||在SQL中做什么? SELECT 'a' || ',' || 'b' AS letter 解决方案 ||表示字符串连接.不幸的是,字符串连接不能完全移植到所有SQL方言中: ansi sql:||(中缀运算符) mysql:concat(vararg函数). 警告:||表示“逻辑或"(这是可配置的,但是要感谢 @hvd 指出) > oracle:||(中缀运算符),con
..
例如-我从cli创建数据库和表并插入一些数据: CREATE DATABASE testdb CHARACTER SET 'utf8' COLLATE 'utf8_general_ci'; USE testdb; CREATE TABLE test (id INT, str VARCHAR(100)) TYPE=innodb CHARACTER SET 'utf8' COLLATE 'utf
..
惊喜-这在MySQL中是一个非常有效的查询: select X, Y from someTable group by X 如果您在Oracle或SQL Server中尝试了此查询,则会收到自然错误消息: Column 'Y' is invalid in the select list because it is not contained in either an aggrega
..
我知道并没有什么区别,但是"LEFT JOIN"是ANSI形式,还是有任何RDBMS都将失败"LEFT JOIN"并要求"LEFT OUTER JOIN". [我在这里问是为了节省一些点击次数,填写表格等,以获得正确的ANSI标准!] 根据ANSI规范, 解决方案 [OUTER]是可选的(当然,您假设每个SQL产品都是ANSI兼容的.对于联接,它们可能是..
..
我想确认SQL查询 SELECT .... FROM apples, oranges LEFT JOIN kiwis ON kiwis.orange_id = oranges.id, bananas WHERE .... 完全等同于FROM子句中的其他排列,例如 SELECT .... FROM oranges LE
..
我们正在开发ETL作业,并且我们的顾问在连接表时一直使用“旧式" SQL select a.attr1, b.attr1 from table1 a, table2 b where a.attr2 = b.attr2 代替使用内部连接子句 select a.attr1, b.attr1 from table1 as a inner join table2 as b on a.
..
在我工作过的每家公司中,我发现人们仍在按照ANSI-89标准编写其SQL查询: select a.id, b.id, b.address_1 from person a, address b where a.id = b.id 而不是ANSI-92标准: select a.id, b.id, b.address_1 from person a inner join address
..
这一直困扰着我 - 为什么SQL语句中的GROUP BY子句要求包含所有非聚合列?这些列应该默认包含 - 一种“GROUP BY *” - 因为我甚至无法运行查询,除非它们全部包含在内。每一列都必须是一个聚合或在“GROUP BY”中指定,但似乎任何未聚合的东西都应该自动分组。 也许它是ANSI-SQL标准,但即便如此,我也不明白为什么。有人可以帮我理解这个约定的必要吗? 解决方案
..
我有一个简单的表格,里面有许多ID和日期。 ID日期 10R46 2014-11-23 10R46 2016-04-11 100R9 2016-12-21 10R91 2013-05-03 ... ... 我想制定一个查询计算日期的滚动时间段的唯一ID,例如十天。这意味着对于每个日期,它应该给我在该日期和10天之前的唯一ID的数目。结果应该看起来像这样。
..