2016-08-11 18 views
1

から列データに挿入します。さて、私が試してみた:1054不明な列「original.FirstName:MySQLは、私は2つのテーブルを持っている別のテーブル

1.Errorコード: '節'

INSERT INTO dummy (ID) 
SELECT ID 
FROM original 
WHERE dummy.FirstName = original.FirstName 
    AND dummy.LastName = original.LastName; 

2.Errorコードで1054不明な列 't2.FirstName' を"の『where句』

UPDATE dummy 
SET ID = original.ID 
WHERE dummy.FirstName=original.FirstName 
    AND dummy.LastName= original.LastName; 

3.Errorコード:1175あなたは安全な更新モードを使用している、あなたはそれが安全モードを無効にするにはKEY列を使用してWHEREせずにテーブルを更新しようとした、内のオプションを切り替えます環境設定 - > SQLエディタを開き、再接続します。

注:セーフモードを無効にすることなく方法を見つけなければなりません。誰かが私はこれら3例それぞれで間違っていたものを理解するのに役立ち、および/または私のよりよい解決策を与えることができれば

UPDATE dummy 
    JOIN original 
    ON original.FirstName = dummy.FirstName 
     AND original.LastName = dummy.LastName 
SET dummy.IDPacient = original.ID 
WHERE original.ID <> 0; 

は今、私は多くの助けをいただければ幸いです。

答えて

2

バージョン1は間違っています - 新しい行を挿入し、既存の行は更新しません。

バージョン2は、あなただけの「オリジナル」に参加する必要がある、近くにあります:

UPDATE dummy 
SET ID = original.ID 
FROM dummy 
INNER JOIN original 
    ON dummy.FirstName =original.FirstName 
    AND dummy.LastName = original.LastName; 
+0

ご協力いただきありがとうございます。しかし、ここに何かがあります。私は 'FROM'で'この位置で有効な入力ではありません 'という文法エラーを受け取ります。 – MRM

+0

querry 'FROM'から削除し、最後に' set'を移動するとエラーが発生しました。 – MRM

1

あなたは「オリジナル」と「ダミー」のテーブル間の最初と最後の名前に参加して、更新を実行する必要がありますID

はこれを試してみてください。..

Update a 
Set a.ID = b.ID 
From dummy a 
Join original b 
On a.firstname = b.firstname 
And b.lastname = b.firstname 

あなたはあなたのクエリに句からの「元」テーブルの列に基づいてフィルタリングしようとしていたが、それが含まれていませんでした。

このリンクでは、必要に応じてさらに便利な情報が表示される場合があります。 SQL update query using joins

関連する問題