Questions tagged «ansi-sql»

16
为什么没有比ANSI-89更好地采用SQL ANSI-92标准?
在我工作的每家公司中,我发现人们仍在按照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 b on a.id = b.id 对于这样的极其简单的查询,可读性没有太大差异,但是对于大型查询,我发现将联接条件归为一组并列出该表可以更轻松地查看联接中可能存在问题的位置,并且让我将所有过滤保留在WHERE子句中。更不用说我觉得外部联接比Oracle中的(+)语法直观得多。 当我尝试向人们传播ANSI-92时,使用ANSI-92而不是ANSI-89有什么具体的性能优势?我会自己尝试,但是我们在这里使用的Oracle设置不允许我们使用EXPLAIN PLAN-不想让人们尝试优化他们的代码,是吗?
107 sql  join  ansi-sql  ansi-92 

6
为什么MySQL允许没有聚合功能的“分组”查询?
惊喜-这是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 aggregate function or the GROUP BY clause. 那么MySQL如何确定每个X显示哪个Y?它只是选择一个。据我所知,它只是选择找到的第一个Y。理由是,如果Y既不是聚合函数也不在group by子句中,则在查询中指定“选择Y”是没有道理的。因此,作为数据库引擎的我将返回我想要的任何东西,而您会喜欢它。 甚至还有一个MySQL配置参数来关闭这种“松散性”。 http://dev.mysql.com/doc/refman/5.7/zh-CN/sql-mode.html#sqlmode_only_full_group_by 这篇文章甚至提到MySQL在这方面被批评为不符合ANSI-SQL。 http://www.oreillynet.com/databases/blog/2007/05/debunking_group_by_myths.html 我的问题是: 为什么MySQL以这种方式设计?他们打破ANSI-SQL的理由是什么?
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.