0

更新値(item_name)を持つ値がない場合にのみ、更新を実行する必要がある単純な更新クエリを実行する必要があります。例えば、

DBテーブル[item_types]

item_id(PK) | item_name

6のitem_idが存在すると仮定すると、私の試みは

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"

ここでエラーについて説明してください。どうすればこれを実現できますか?

ありがとうございました

4

3 に答える 3

0

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

于 2011-01-16T15:49:44.627 に答える
0

挿入ステートメントでテーブルのエイリアスを使用できるとは思いません。ANDではなく、も使用します。

試す

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'
于 2011-01-16T16:17:35.607 に答える
0

Tobyが提案したように、UPDATE行でエイリアスを使用することはできません。ただし、次の構文を試してください。

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

于 2011-01-17T09:17:07.320 に答える