2017-10-04 17 views
0

に= 1を数える:私は列fotoに重複する値を持つテーブルcadutiを持ち、列fotoから値を持つ列foto_okを更新する必要がアップデートグループとテーブルによると、私は、このSQLクエリ持ってmysqlの

SELECT * 
FROM caduti 
GROUP BY foto 
HAVING count(foto) = 1 

を列内で一意の値の場合にのみ使用できます。

私はこの1つ

UPDATE caduti 
SET foto_ok=foto 
FROM (
SELECT * 
FROM caduti 
GROUP BY foto 
HAVING count(foto) = 1 
) 

のようないくつかのUPDATE文を試してみましたが、私はそれを動作させる方法を見つけ出すことはできません。どんな助け?

答えて

0

内部クエリから一意のfotoを取得してから、自己結合を適用してすべての行を更新できます。

UPDATE (SELECT foto 
FROM caduti 
GROUP BY foto 
HAVING count(foto) = 1) u 
INNER JOIN caduti AS c ON c.foto = u.foto set foto_ok=u.foto; 
+0

何が意味するのかわかりません。私はそれをそのまま試してみましたが、6静的エラーとSQLエラー#1052を与えました - フィールドリストの 'foto'が曖昧です – Pier67

+0

@ Pier67もちろんエラーが出ます。 foto列はあいまいだったので。私は答えを更新しました。また、uとcは単なるエイリアスです。私はあなたがエイリアス命名法を気づいていないかどうかわかりません。 – Ravi

+0

エイリアスの名前は分かっていますが、初心者だから使い方を理解するのに時間がかかります。結局、私はcadutiをcに置き換えて、それをそのまま残して動作させます!だから、たくさんありがとう! – Pier67

関連する問題