2013-08-13 3 views
0

J'ai cette requête, qui sélectionne les données de l'une des colonnes de la ligne précédente ('next_line'), et les données d'une colonne différente dans la plus récente row ('raw_line')."Chaque table dérivée doit avoir son propre alias" même si je leur ai donné des alias

SELECT CONCAT((SELECT `next_line` FROM `lines` ORDER BY id DESC LIMIT 1 OFFSET 1), (SELECT  
`raw_line` FROM `lines` ORDER BY id DESC LIMIT 1)) 

Cette requête fonctionne parfaitement telle quelle. Mais ce que je veux faire est de mettre cette sortie dans une colonne différente dans la ligne la plus récente * ('composée_line') *. Mais quand je fais ceci:

UPDATE `lines` set `composed_line`=CONCAT((SELECT `next_line` FROM `lines` ORDER BY id DESC LIMIT 
1 OFFSET 1), (SELECT `raw_line` FROM `lines` ORDER BY id DESC LIMIT 1)) ORDER BY id DESC LIMIT 1; 

Je reçois cette erreur:

#1093 - You can't specify target table 'lines' for update in FROM clause 

J'ai donc essayé ceci:

UPDATE `lines` set `composed_line`=CONCAT((SELECT `next_line` FROM (SELECT * FROM `lines` ORDER 
BY id DESC LIMIT 1 OFFSET 1) AS `alias`, (SELECT `raw_line` FROM (SELECT * FROM `lines` ORDER BY 
id DESC LIMIT 1)) AS `alias2` ORDER BY id DESC LIMIT 1 

Et je suis arrivé cette erreur:

#1248 - Every derived table must have its own alias 

Je ne peux pas voir ce que je fais mal - faire 'alias' et 'alias2' ne compte pas comme alias de table dérivés?

Toute aide est tellement appréciée!

+0

double possible de [chaque table dérivée doit avoir son propre alias] (http://stackoverflow.com/questions/ 1888779/every-derived-table-doit-avoir-son-alias) – hkf

Répondre

0

Vos besoins internes sélectionner un alias aussi:

UPDATE `lines` set `composed_line`= 
CONCAT((SELECT `next_line` FROM (SELECT * FROM `lines` ORDER 
BY id DESC LIMIT 1 OFFSET 1) AS `alias`, 
(SELECT `raw_line` FROM (SELECT * FROM `lines` ORDER BY 
id DESC LIMIT 1) AS `alias3`) AS `alias2` ORDER BY id DESC LIMIT 1 

Voir aussi: every derived table must have its own alias

+0

hmm - cela me donne une erreur de syntaxe ...? – sachiko

+0

Il manquait)) à la fin. Cependant, cela ne fait pas ce que je veux faire. Il remplit juste toutes les lignes '' composé_line '' avec la ligne 'next_line' de la ligne précédente. :( – sachiko

Questions connexes