2011-01-16 6 views
0

値を更新する値がない場合(item_name)、更新を行う必要のある単純な更新クエリを実行する必要があります。例えば、UPDATEクエリの実行中に値が存在することを確認してください

DBテーブルのitem_idは6で存在すると仮定すると、[item_types]

item_id(PK) | item_name 

、私の試みは

UPDATE item_types as k SET k.item_name = 'item_1' WHERE NOT EXISTS (SELECT * FROM item_types as a WHERE a.item_name = 'item_1') AND k.item_id = '6' 

あるしかし、これは私が

"You can't specify target table 'k' for update in FROM clause" 

あなたはでしたエラー与えますここでエラーを説明し、これをどのように達成できますか?

ありがとうございました

答えて

0

item_nameフィールドに一意の制約を付けて、エラーをキャッチすることができます。

+0

はい、それはこれが行わ得るための良い方法ですが、私は私のクエリでどのような問題を把握する必要があるが、あなたは説明していただけますか? – nimo

0

私はあなたが挿入ステートメントのテーブルのエイリアスを使うことはできないと思います。また、ANDではなくANDを使用します。トビーは、あなたがUPDATE行で別名を使用することはできません、示唆したように

UPDATE item_types SET item_name = 'item_1' WHERE NOT EXISTS (SELECT * FROM 
item_types as a WHERE a.item_name = 'item_1') , item_id = '6' 
+0

mySQLで構文エラーが発生しました。構文については確かですか? – nimo

0

を試してみてください。しかし、次の構文を試してみてください。

UPDATE item_types 
SET item_name = 'item_1' 
FROM item_types k 
WHERE NOT EXISTS (SELECT * FROM item_types as a WHERE a.item_name = 'item_1') 
AND k.item_id = '6' 

HTH、R

関連する問題