4

2つの類似したテーブルtable_aとtable_btable_aが現在のデータであり、一時テーブルであるtable_bを使用してこの情報を更新する必要があります。2つの違いは、table_aにはtable_bにはないパスワードフィールドがあることだけです。

私はいくつかのことをしようとしています。

1.Compare the data based on the "user_id" field. 
2. If there is a user_id not found in table_b but there is one in table_a remove that row in table_a
3. If there is a user_id in table_b that is not found in table_a add that row of data to table_a
4. If the user_id is found in both then check two of the fields "email" and "job_code" and make sure they are both whatever table_b says.

上記の番号の順序で、別々のMySQLステートメントでこれを行う必要がありますか?以下は、上記のステートメントでの私の試みです。ヘルプやトラブルシューティングは大歓迎です。ありがとう!

ステートメント1:

SELECT * FROM table_a
WHERE table_a.user_id
NOT IN (
SELECT table_b.user_id
FROM table_b
WHERE table_a.user_id=table_b.user_id
)  // But how do I delete those records that are selected?

ステートメント2:

SELECT * FROM table_b
WHERE table_b.user_id
NOT IN (
SELECT table_a.user_id
FROM table_a
WHERE table_a.user_id=table_b.user_id
) //How do I Insert these records that I have in table_b but not in table_a

ステートメント3:

SELECT email FROM table_b
WHERE table_b.user_id = table_a.user_id,
AND table_b.email != table_a.email  //now I need to update table_a with the emails from table_b
4

2 に答える 2

1

ステートメント#1

DELETE A.*
FROM table_a A
LEFT JOIN table_b B
USING (user_id)
WHERE B.user_id IS NULL;

ステートメント#2

INSERT INTO table_b (column1,column2,...,columnN)
SELECT A.column1,A.column2,...,A.columnN
FROM table_b B LEFT JOIN table_a A
USING (user_id)
WHERE A.user_id IS NULL;

ステートメント#3

UPDATE table_a A INNER JOIN table_b B USING (user_id)
SET A.email = B.email,A.job_code = B.job_code;

更新2012-06-1911:54EDT

AとBは、テーブルの単なるエイリアスです。

たとえば、ステートメント#3のクエリは次のように記述できます。

UPDATE table_a as A INNER JOIN table_b as B USING (user_id)
SET A.email = B.email,A.job_code = B.job_code;

または、次のように、エイリアスがまったくありません。

UPDATE table_a INNER JOIN table_b USING (user_id)
SET table_a.email = table_b.email,table_a.job_code = table_b.job_code;
于 2012-06-19T14:43:17.240 に答える
0

最初の問題の解決策::1)

delete FROM table_a
left join table_b
on 
table_a.user_id=table_b.user_id
and  table_a.user_id is null
于 2012-06-19T14:38:56.747 に答える