2012-02-02 2 views
6

Voglio ordinare una tabella mysql con due timestamp di due volte da due colonne diverse. Ho il seguente comando mysql:Ogni tabella derivata deve avere il proprio alias - errore dalla combinazione decrescente MySQL

SELECT * FROM (
(SELECT '1' AS `table`, `vid_req_timestamp` AS `timestamp`, `title` FROM `movies` WHERE `vid_req` = '1') 
UNION 
(SELECT '2' AS `table`, `ost_req_timestamp` AS `timestamp`, `title` FROM `movies` WHERE `ost_req` = '1') 
) 
ORDER BY `timestamp` DESC 

Questo mi dà un errore:

#1248 - Every derived table must have its own alias 

voglio combinare vid_req_timestamp e ost_req_timestamp e rendere quelli discendente. Ed è importante sapere da dove viene il timestamp (in qualche modo).

risposta

14

In questo caso, la tabella derivata che richiede un alias è quella da cui si sta SELEZIONANDO *.

La rientranza aiuta a renderlo più chiaro.

SELECT * FROM 
(
    (SELECT '1' AS `table`, `vid_req_timestamp` AS `timestamp`, `title` FROM `movies` WHERE `vid_req` = '1') 
    UNION 
    (SELECT '2' AS `table`, `ost_req_timestamp` AS `timestamp`, `title` FROM `movies` WHERE `ost_req` = '1') 
) AS `some_table_name_lol_this_is_an_alias` 
ORDER BY `timestamp` DESC 
+0

Grazie mille! –