2016-11-14 36 views
-2

我一直在寻找一个显示SQL中SELECT语句的语法顺序的查询。全面的SELECT语法

数据库引擎是不重要的,我只是希望看到一个选择查询的最简单和最多变的表达式,根据使用的子句。

下面是我的第一次尝试,每个子句一次,用适当的语法使用:

SELECT AVG/MIN/MAX/SUM/COUNT/DISTINCT(field_list) AS custom_name 
FROM table1 
JOIN field_list2 
ON table2_field_to_join_on 
= table1_field_to_join_on 
WHERE condition 
GROUP BY field_list_condition 
HAVING conditions 
ORDER BY field_list_order_condition ASC(default)/DESC 
LIMIT number_of_records; 

我只是想找以上的更全面的版本。

编辑:回想起来,这是有道理的,为什么这被标记为不清楚。我不会删除这个问题,因为答案帮助我达到了我想要的地方,也可能帮助其他人。

+0

为了最大的尊重,为什么?试图让这个跨平台将是一场噩梦。 –

+0

一个原因可能是简单地显示更复杂查询的语法顺序。另一个可能是教他们可能不知道的各种表情的初学者。当然有文档,但我从来没有遇到过使用所有表达式的整体查询。我想对我来说,这将在单一的统一窗口中展示SQL的强大功能。 (也许不包括可以完成的各种算术,以便保持简化和SQL唯一) –

回答

0

http://dev.mysql.com/doc/refman/5.7/en/select.html

SELECT 
[ALL | DISTINCT | DISTINCTROW ] 
    [HIGH_PRIORITY] 
    [MAX_STATEMENT_TIME = N] 
    [STRAIGHT_JOIN] 
    [SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT] 
    [SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS] 
select_expr [, select_expr ...] 
[FROM table_references 
    [PARTITION partition_list] 
[WHERE where_condition] 
[GROUP BY {col_name | expr | position} 
    [ASC | DESC], ... [WITH ROLLUP]] 
[HAVING where_condition] 
[ORDER BY {col_name | expr | position} 
    [ASC | DESC], ...] 
[LIMIT {[offset,] row_count | row_count OFFSET offset}] 
[PROCEDURE procedure_name(argument_list)] 
[INTO OUTFILE 'file_name' 
    [CHARACTER SET charset_name] 
    export_options 
    | INTO DUMPFILE 'file_name' 
    | INTO var_name [, var_name]] 
[FOR UPDATE | LOCK IN SHARE MODE]] 

显然,这是MySQL特有的,但它给出了一个相当不错的味道。