2017-03-19 32 views
0

私はmysqlテーブルの間でデータを移動しています。私は内部のジョインをして、columnXをcompanyテーブルのcolumnXをpeopleテーブルにミラーリングしようとしています。テーブル2のINNER JOINの結果に基づいてテーブル1のMySQL更新カラム

UPDATE people 
INNER JOIN company on people.currCompId=company.itemId 
SET people.companyId = company.id; 

これは、別のテーブルで同様の結合を行い、データを正常に移動するにもかかわらず、動作しません。だから私は、同じ結合を使用して単純なSELECTステートメントを試みたが、それはどちらか動作しませんでした:

SELECT people.fullName, company.id 
from people 
INNER JOIN company on people.currCompId=company.itemId; 

誰でも更新文が何かを更新するために、なぜselect文は戻りません失敗した理由上の任意の光を当てることができれば何でも

people.currCompId & company.itemIdは、両方のVARCHAR(50)として定義され、それらの両方は、「255A7C76-A6F0-40B5-ADBA-DE290B4GG5A1」、両方の列は、このデータのために同じソースを持っているようなデータを含んでいるので、私それが参加すると期待していました。

+1

あなたはデータを提供しておらず、「うまくいかない」という意味を説明していません。誰もあなたを助けることができる情報はありません。列名のスペルは間違っていませんか? –

+0

この文脈で「うまくいきません」とは、a)更新文が何かを更新できないことを意味すると思いました。b)select文が何も返しません。 – schnimmy

+1

selectが行を生成しない場合は、データは存在する。質問にいくつかのサンプルデータを入力して、結果が期待できる結果を – GurV

答えて

0

レコードを更新しない理由は、どの行も一致しないためです。例えば。以下は、すべてのレコードを返さないでください。

SELECT * 
FROM people 
INNER JOIN company on people.currCompId=company.itemId; 

これ多分クエリはitemIdcompanyIdに参加しようとするため? people.currComIdからcompany.idに参加する必要がありますか?

更新(更新問題の)例に基づいて

、それは両方のcompanyIdのように見えるとitemIdは、両方のテーブルには、その後いくつかのレコードを持っている場合は、私はもう少しを探して推薦する.. UUID形式になっていますこれらのテーブルにデータがどのように挿入されるかを示します。異なるUUIDがCompanyItem(そのように見えます)に使用されている場合、UUIDはほとんど常にユニークになるため、一致しません。

+0

SELECT *は何も返しません。列は間違いありません。 – schnimmy

+0

'SELECT'が何も返さない場合、明らかに' update'はレコードを更新しません。 –

+0

はい私はそれをよく知っています。なぜそれが機能していないのかの提案を求めています。 – schnimmy

0

2つのVARCHAR列を結合しようとしています。あなたの説明では、参加している両方の列に共通のデータがあるので、両方の列のデータをどのように比較するかが問題になるはずです。今度はthis explanationに基づいて、あなたの比較をより効果的にする必要があります。クエリを次のように変更してください。

SELECT * 
FROM people 
INNER JOIN company on UPPER(TRIM(people.currCompId)) = UPPER(TRIM(company.itemId)); 

比較対象の両方のテーブルが比較のために同じ文字セットを持っていることを確認してください。

+0

提案していただきありがとうございます。私はそれを試して、列がいくつかの値を持っていることを絶対に確かめるために、行を返しません。また、 "SELECT * FROM WHERE LIKE"を実行して共通の値があることを確認しました。 – schnimmy

+0

@schnimmyどちらのテーブルも同じ文字セットと照合をしていますか? –

+0

会社と人物の照合順序は同じですが(utf8_general_ci)、人々の関連する列はlatin1_swedish_ci – schnimmy

関連する問題