2017-03-08 13 views
0

これらの2つのクエリは正常に動作しますか?2つのクエリを1つの同等のクエリに置き換えます。

​​

一時テーブルを作成する必要はありません。必要なのは、main.aggr列を更新することだけです。

+0

INSERTとUPDATEクエリを同等のクエリで置き換えることはできません。 –

+0

最初のクエリは、このような悪い考えのように見えます。 – Strawberry

答えて

1

使用MySQLの複数テーブルの更新構文を試してみてください。私はは、クエリの部品を再配置している

update main, (
    select a.id, b.aggr 
    from main a 
    join (
     select uk, group_concat(cascina_uk SEPARATOR '|') as aggr 
     from main 
     group by uk 
    ) b on a.uk = b.uk 
) temptable 
set main.aggr = temptable.aggr 
where main.id = temptable.id 

注意動作中のクエリに変換します。私はサブクエリに行うことができる最適化があると思う。

1

あなたのお問い合わせからは、同じ値がaggrの複数のid行を更新していることを理解しています。そして、この1は動作するはずです:

update main 
set aggr = group_concat(cascina_uk SEPARATOR '|') 
group by uk 
1

この

update main c 
set 
    c.aggr = (select b.aggr 
       from 
        main a, 
        (select uk, group_concat(cascina_uk SEPARATOR '|') as aggr from main group by uk) b 
       where 
       a.uk = b.uk 
       and c.id = a.id) 
関連する問題