2

次のような表(簡略化)があります。

id     | name   | selfreference | selfreference-name
------ | -------| --------------| ------------------ 
1      | Vienna |               |  
2      | Wien   |               | Vienna
3      | Виена  |               | Vienna

selfreference 列は、同じテーブルの ID 番号を参照します。上記の例では、ウィーンとヴィエンナの両方が同じ都市を参照しているため、それらの自己参照列の値は 1 に等しくなければなりません。

言い換えれば、私は次のようなことをする必要があります

 update `places` 
 set `places`.`selfreference` = 
 (select `places`.`id` from `places`where `places`.`name` = `places`.`selfreference-name`)

しかし、上記の SELECT ステートメントは明らかに間違っています。どう進めていいのか途方に暮れています。

どんなヒントでも大歓迎です。

万歳、テンチ

編集: 目的の出力は次のようになります。

id     | name   | selfreference | selfreference-name
------ | -------| --------------| ------------------ 
1      | Vienna |               |  
2      | Wien   |  1            | Vienna
3      | Виена  |  1            | Vienna
4

2 に答える 2

1

自己参加が必要なのかもしれません

selectでcheckc

select a.*, b.*
from  `places` as a
inner join `places` as b

where b.`name` = a.`selfreference-name`;

そして、上記のクエリで正しい結果が得られた場合

update `places` as a
inner join `places` as b
set b.`selfreference` =  ab.`id`
where b.`name` = a.`selfreference-name`;
于 2016-07-23T09:06:04.197 に答える