MySQL-根据另一个表的不同值更新一个表的行

时间:2018-11-20 20:04:32

标签: mysql

我有一个表Users,该表的MemberID列 还有另一个称为UserMembers的表,该表为同一用户具有多个MemberID。 现在,我只需要使用UserMembers表中的1个值填充Users表MemberID,因此,如果它具有3个值,我需要最小值。 我尝试过

UPDATE Users 
SET MemberID = (SELECT DISTINCT m.MemberID FROM UserMembers 
um INNER join Users u on  um.UserID = u.UserID
        ORDER BY um.CreatedDT ASC LIMIT 1);

但这不是正确的查询。任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

Derived Table中,您可以从MemberID表中为每个UserID获得UserMembers的最小值。使用Users将其连接到UserID表,然后在Users表中设置此最小值。

UPDATE Users AS u
JOIN 
(SELECT UserID, MIN(MemberID) AS minMemberID
 FROM UserMembers 
 GROUP BY UserID
) AS dt 
  ON dt.UserID = u.UserID 
SET u.MemberID = dt.minMemberID