Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Dlaczego podana składnia jest poprawna w mysql?

To alternatywa UNION składnia z końcowym ORDER BY .

Tak wygląda połączenie dwóch zaznaczeń:

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

I na tym polega taki związek między jednym wybierz wygląda tak:

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

W ogóle nie ma związku z podzapytaniami.

Nie jest to udokumentowane w MySQL, ale jest oczywiste z gramatyka :

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Laravel Eloquent porównuje datę z polem datetime

  2. Czy mam mysql_real_escape_string hasło wpisane w formularzu rejestracyjnym?

  3. Jak rekursywnie usuwać elementy z tabeli?

  4. MySQL – Uzyskaj koszt ostatniego zapytania za pomocą POKAŻ STATUS JAK „Last_Query_Cost”

  5. Wyzwalaj połączenia w usuwaniu kaskadowym