2017-09-18 14 views
0

私は2つのテーブルを持っています:あるレコードを別のテーブルの値で更新する

私は色を挿入し、そのIDを素材レコードに追加したいと思います。

だから私は実行します。その後

INSERT INTO colors (color) VALUES ('red'); 

を私は(例のために3。)指定されたmaterials.idを有する材料を更新したいです。私はあなただけのselect文を逃したと思います

UPDATE materials 
SET material='glass',price=100,color_id=(colors.id WHERE color='red') 
WHERE id=3; 

答えて

1

は、だから私のような何かを必要としています。

UPDATE materials 
SET material='glass',price=100, color_id=(select colors.id WHERE 
color='red') 
WHERE id=3; 
+1

'INSERT'が失敗する重複行を回避するには、' MAX(colors.id) 'を追加してください。 – Stavr00

+0

そうですが、色の列がユニークでない限り、クエリが推測できるようになります。しかし、より良いよりも安全です:) – marco

+0

@ Stavr00 SQLiteでは、そのようなサブクエリは決して失敗します(http://www.sqlite.org/lang_expr.html#subq)。 –

関連する問題