sql >> Databasteknik >  >> RDS >> Mysql

Varför är den givna syntaxen giltig i mysql?

Det är alternativet UNION syntax med en sista ORDER BY .

Så här ser en sådan förening mellan två utvalda ut:

(SELECT ...)
UNION
(SELECT ...) ORDER BY ... LIMIT ...

Och detta är vad en sådan förening mellan en select ser ut så här:

(SELECT ...) ORDER BY ... LIMIT ...

Inte alls relaterat till underfrågor.

Detta är inte dokumenterat i MySQL, men är uppenbart från den grammatik :

top_level_select_init:
        SELECT_SYM
        {
            Lex->sql_command= SQLCOM_SELECT;
        }
        select_init2
        | '(' select_paren ')' union_opt
        ;


/* Need select_init2 for subselects. */
union_select_init:
        SELECT_SYM select_init2
        | '(' select_paren ')' union_opt
        ;

...

union_opt:
        /* Empty */ { $$= 0; }
        | union_list { $$= 1; }
        | union_order_or_limit { $$= 1; }
        ;


  1. Hur man infogar och tar bort data i PostgreSQL

  2. Aktiverar MySQL generell frågelogg med JDBC

  3. Hantera data från flervalsfält

  4. Tillåten minnesstorlek på 8589934592 byte är slut