0

我手头有一项任务,这显然超出了我的 mysql 技能 :) 我正在学习...

我有两张桌子。

1. import
2. users

import 包含分配的列,例如 id、user_id、user_email ... users 包含 user_id 和 user_email

我需要迁移用户内容以导入。具体来说,我在导入时缺少 user_id。但它包含 user_email。

所以我需要考虑一个语句,我从两个表中匹配 user_email 并使用匹配中的 user_id 更新导入表。

到目前为止,我有这个:

SELECT u.user_id, u.user_email, i.user_email FROM users u, import i WHERE i.user_email = u.user_email;
4

3 回答 3

3

import基本上你可以通过加入来直接更新表user

这是在MySQL.

UPDATE `import` a
        INNER JOIN users b
            ON a.user_email = b.user_email 
SET     a.user_id  = b.user_id 

为了SQL Server

UPDATE  a
SET     a.user_id  = b.user_id 
FROM    [import] a
        INNER JOIN users b
            ON a.user_email = b.user_email
于 2013-04-04T12:25:07.130 回答
0

如果您想根据地址匹配用户,确保他们是唯一的,那么您可以像这样加入他们:

UPDATE import
        SET import.user_id = users.user_id
    FROM import
    INNER JOIN users ON import.user_email = users.user_email
于 2013-04-04T12:28:43.180 回答
0

你在正确的轨道上;那行得通;您可能需要根据需要选择其他字段。您也可以使用 JOIN 语句;然后您可以决定如何处理用户表;你在插入吗?更新?

我认为标准 SQL 支持 INSERT INTO SELECT,不确定更新,但您的 DBMS 可能有支持它的 SQL 扩展...

于 2013-04-04T12:29:31.667 回答