0

私は2つのテーブルを持っています。AuthUser

Authにはffがあります。列(ソース)18883行

id | username | password

ユーザーはffを持っています。列(宛先)18868行

id | username | first name | last name | email

うーん

auth.id = user.id
auth.username = user.username

何らかの理由で、Userテーブルにユーザー名が欠落している行があります。私がやりたいのは、欠落している行を検索しUser、IDとユーザー名Authを挿入してfirst name='fname'、last name='lname' 、=' emailname@domain.com'を挿入するスクリプトを作成することです。

したがって、両方のテーブルの行数は同じで、同期されます。

ありがとうございました。

4

1 に答える 1

2

何が欠けているのか不明です。。。IDまたはユーザー名、あるいはその両方。ユーザー名がmissingを指定していると仮定すると、次のクエリは必要な処理を実行します。

insert into user(id, uesrname, firstname, lsatname, email)
    select a.id, a.username. 'fname', lname', 'name@domain.com'
    from auth a left outer join
         user u
         on a.username = u.username
    where u.id is null

これは、usernameがuserテーブルで重複していないことを前提としています。

「id」という列が両方のテーブルで同じ値になるのは奇妙に思えます。データ構造を再検討して、これが実際に当てはまるかどうかを確認する必要があります。多くの場合、「id」は自動インクリメントされた主キーになります。

于 2012-07-31T00:21:28.807 に答える