SQL查询 - 同步表

时间:2012-07-31 00:16:33

标签: sql

我有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上查找缺少的行,并插入来自Auth的ID和用户名,然后插入first name ='fname',last name = 'lname',email ='name@domain.com'。

因此两个表将具有相同的行数并且同步。

谢谢。

1 个答案:

答案 0 :(得分:1)

你不清楚缺少什么。 。 。 id或用户名或两者。假设用户名指定缺失,则以下查询执行您想要的操作:

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

这假设用户表中没有重复用户名。

看起来奇怪的是,名为“id”的列在两个表中都具有相同的值。您应该重新访问您的数据结构,看看是否真的如此。通常情况下,“id”将是一个自动递增的主键。