sql >> Database teknologi >  >> RDS >> Mysql

Hvorfor er den givne syntaks gyldig i mysql?

Det er den alternative UNION syntaks med en endelig ORDER BY .

Sådan ser sådan en forening mellem to udvalgte ud:

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

Og det er sådan en forening mellem en select ser sådan ud:

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

Slet ikke relateret til underforespørgsler.

Dette er ikke dokumenteret i MySQL, men er tydeligt fra 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. Hvordan kan jeg dumpe en MySQL-database uden at bruge mysqldump i Python

  2. MySQL Group Resultater efter dag ved hjælp af tidsstempel

  3. Vælg mellem agentbaseret og agentløs overvågning

  4. Nærmest match, del 2