检查syntaxfromsql()函数,可以通过自己的sql语句字符串生成DW语法,然后
在选择查询中,select子句是投影操作,
Select是SQL数据操作语言(DML)中的一条指令,用于查询表中的字段数据。它可以与条件子句(如where)或有序子句(如order)一起使用,以获得查询结果。
SELECT语句内部组件的理论计算顺序是:
表联接自;
笛卡尔乘积
连接条件过滤(内部连接完成)
添加外部连接的行
WHERE子句筛选出满足条件的行集;
GROUPBY子句对行集中的行进行分组和合并,以便多行对应于结果集中的一行;
应用HAVING子句从中间结果中过滤出满足条件的行集;
SELECT的结果列中的表达式,后跟DISTINCT关键字处理(如果有)。因此,WHERE子句、GROUPBY子句或HAVING无法看到和使用在SELECT中为结果集中的列分配别名。
应用ORDERBY子句对结果集中的行进行排序。
如果有TOP或OFFSET/FETCH,则选择结果行。
交叉连接交叉连接。是一种没有任何限制的连接方法,结果是笛卡尔积。SQL语法如下所示:
上述SQL相当于:
内部联接(默认为联接)内部联接。当表中至少有一个匹配项时返回行可以理解为同时满足某些条件的两个表中的行的组合。内连接又分为等连接、不等连接和自连接。SQL语法如下所示:
使用作为连接条件。
不平等连接:不用作连接条件。
自连接:自己连接自己,也就是只连接一个表。
左连接左连接。一种外部联接,返回左表(table1)中的所有行。即使右表(table2)中没有匹配项,如果右表中没有匹配项,结果也是NULL。SQL语法如下所示:
右连接右连接。一种外部联接,返回右表(table2)中的所有行。即使左表(table1)中没有匹配,如果左表中没有匹配,结果也是NULL。SQL语法如下所示:
完全连接。一种外部联接类型,只要左表(table1)。如果右表和左表(table2)中有一个匹配,则返回一行,该行收集左连接和右连接的结果。SQL语法如下所示:
其中,MySQL不支持全联接,全联接的查询可以通过左联接、并联接和右联接相结合来实现。示例:
联合联合查询(去重)。用于合并两个或多个SELECT语句的结果集。UNION中的每个SELECT语句必须具有相同顺序的相同数量的列,并且这些列还必须具有相似的数据类型。SQL语法如下所示:
注意:联合查询的结果中没有重复的值。UNIONALLunion查询(无重复)。用于合并两个或多个SELECT语句的结果集。UNION结果集中的列名始终等于UNION中第一个SELECT语句中的列名。SQL语法如下所示:
或者:
注意:
UNIONALL查询的结果中允许有重复值。
使用UNION或UNIONALL时,只能在最后一个SELECT语句中使用ORDERBY命令。