2017-03-22 4 views
-3

実際には、2つのmysqlテーブルを複数の列と比較するときにmysqlレコードを更新する必要があります。レコードが存在しない場合は、新しいレコードとして挿入する必要があります。どうすればそれを達成できますか?以下は私のシナリオです。事前のおかげで複数の列を比較してmysqlレコードを更新する方法

表1:

Name | Age | occupation | DOJ | Salary | 
---------------------------------------------------------------- 
Raju | 27 | Manager | 12/12/12 | 12,000 
-------------------------------------- 
Raman | 30 | Director | 11/11/11 | 14,000 
- 
Sriram | 25 | Assistant | 10/10/10 | 10,000 
- 

表2:

Name | Age | occupation | DOJ | Salary | 
---------------------------------------------------------------- 
Raju | 27 | Manager | 12/12/12 | 12,000 
-------------------------------------- 
Raman | 30 | Director | 8/8/8 | 18,000 
- 
Ravi | 34 | CEO | 9/9/9 | 30,000 
- 

私は上記の構造を持つレコードの束とExcelを持って、私は一時テーブル内のレコードをアップロードする必要があります(temp_table)を作成し、そのテーブルをMainテーブル(main_table)と比較します。レコードが存在するかどうかは、更新されている場合はMain_tableで更新する必要があり、そうでない場合はmain_tableに挿入します。

ありがとうございます。

+0

あなたは名前、年齢、職業、DOJおよび給与にTABLE1とtable2の中で一意のインデックスを作成する必要があります。そして、 'insert1 into * table2'から一日中無視することができます。または、あなたが物事を更新したい場合は、 'table2 select * from table1'に置き換えてください。 – Dimi

+0

あなたの質問は明確ではありません。どこに挿入するのですか?どこで更新しますか?なぜラマンtable1とラマンtable2が異なるのですか?私たちにdbスキーマ、サンプルデータ、および期待される出力を示してください。 \t [** How-to-Ask **](http://stackoverflow.com/help/how-to-ask) \t \t [**スタート**] (http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/)質問品質を改善し、より良い回答を得る方法を学ぶことができます。 –

+4

[可能な場合はMySQLテーブルまたは更新プログラムに挿入する]の複製があります(http://stackoverflow.com/questions/4205181/insert-into-a-mysql-table-or-update-if-exists) –

答えて

1

Nameが存在する場合に限り、1を返す選択肢を書くことができます。次に、これを、存在を否定する別の選択肢のサブクエリとして使用して、挿入すべきものを見つけることができます。最後に、あなたはinsertのために、第2の選択を使用することができます - select

insert into Table2(Name, Age, Occupation, Doj, Salary) 
select Name, Age, Occupation, Doj, Salary 
from Table1 t2 where not exists (select 1 
           from Table2 t 
           where t.Name = t2.Name) 
関連する問題