2012-04-16 17 views
1

ユニークでない識別子を持つテーブルが1つあり、対応するカラムをユニークな識別子で別のテーブルの値で更新する必要があります。ユニークな識別子を持たない別のテーブルの値を持つテーブルを更新するSQL UPDATEステートメント

は基本的に私は私がどこTable2.Col2表1から対応する値でTable1.Col2上の計算を実行したい二つのテーブル

表1

| Col1 | Col2 | 
--------------- 
| A | 1 | 
--------------- 
| A | 2 | 
--------------- 
| B | 4 | 
--------------- 
| C | 6 | 
--------------- 
| C | 9 | 
--------------- 

表2

| Col1 | Col2 | 
--------------- 
| A | 1 | 
--------------- 
| B | 2 | 
--------------- 
| C | 3 | 
--------------- 

を持っています。 Col1 = Table2.Col1はMySQLを使用しています。例については

| Col1 | Col2 | 
--------------- 
| A | 1 | // (1/1) 
--------------- 
| A | 2 | // (2/1) 
--------------- 
| B | 2 | // (4/2) 
--------------- 
| C | 2 | // (6/3) 
--------------- 
| C | 3 | // (9/3) 
--------------- 

任意の助けいただければ幸いです。

+0

はのCol1です表2では一意ですか?あなたはどの値を使いたいのですか? – Jim

答えて

3

あなたはこのような何か必要なように見えます:

UPDATE Table1 
    JOIN Table2 
     ON Table1.Col1 = Table2.Col2 
SET Table1.Col2 = Table1.Col2/Table2.Col2 
+0

彼はUPDATEをしたくないように思えました。ちょうど計算を返します。これは、table1とtable2がすでに存在し、入力されているようです。 –

+0

@joeframbach OPを引用するには: "**対応する列を別のテーブルの値で一意の識別子で更新する必要があります" –

+0

次に、 'SET Table1.Col2 '。 –

3

をテーブルに参加して、あなたは、次の操作を行うことができ、算術演算子/

select Table1.Col2/Table2.Col2 as result 
from Table1 
inner join Table2 on Table1.Col1=Table2.Col2; 
1

を使用します。

// for an update 
update table1 
join table2 
    on table1.col1 = table2.col1 
set table1.col2 = (table1.col2 /table2.col2) 

// for a select 
SELECT (t1.col2 /t2.col2) as results 
from table1 t1 
join table2 t2 
    on t1.col1 = t2.col1 
+0

mysqlの構文が間違っています:http://dev.mysql.com/doc/refman/5.5/en/update.html –

+0

@JustinPihonyそれを指摘してくれてありがとう。今すぐ修正 – Taryn

関連する問題