0

前の行の列 (「next_line」) の 1 つからデータを選択し、最新の行 (「raw_line」) の別の列からデータを選択するこのクエリがあります。

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))

このクエリはそのままで完全に機能します。しかし、私がやりたいことは、この出力を最新の行 *('composed_line')* の別の列に入れることです。しかし、私がこれを行うとき:

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;

次のエラーが表示されます。

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

だから私はこれを試しました:

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

そして、私はこのエラーを受け取りました:

 #1248 - Every derived table must have its own alias 

何が間違っているのかわかりません。'alias ''alias2'は派生テーブルのエイリアスとしてカウントされませんか?

どんな助けでも大歓迎です!

4

1 に答える 1