将MySQL Select查询转换为Update查询



我正在使用MySql更新列Sponsor_Parent的数据库用户的最后一行(Member_id = 140(,其结果是选择列(Sponsor_username = Test91(的最后一行将找到他们的Sponsor_username

也就是最后一行Sponsor_usernameTest91,并且希望通过选择赞助商username = Test1A的值来更新

因此将Test1A放入最后一行Member_id = 140Sponsor_Parent

我的Select工作正常,但我无法将其转换为工作的Update查询。

这些Select查询工作正常:

SELECT member_id, username, sponsor_username from users WHERE username = 'Test91'

这是使用最后一行值的手动直接输入。返回:15, Test91, Test1A

现在我更进一步,选择工作良好的值

SELECT member_id, username, sponsor_username from users WHERE username = (Select sponsor_username From users ORDER BY member_id DESC LIMIT 1)

返回:15, Test91, Test1A

这也适用于手动变化

Select Member_id, username, sponsor_username From users Where sponsor_username = 'Test91' in (sponsor_username) AND 'Test91' in (username)

返回:15, Test91, Test1A

当我将此命令用作Update

Update users Set sponsor_parent = (SELECT sponsor_username from users WHERE username = (Select sponsor_username From users ORDER BY member_id DESC LIMIT 1))

我得到错误:

#1093-表"users"被指定了两次,既是"UPDATE"的目标,也是数据的单独来源

因此,如果我用一种Join命令来消除重复的用户

Update users s1 Set sponsor_parent = (SELECT s1.sponsor_username WHERE s1.username = (Select s1.sponsor_username ORDER BY s1.member_id DESC LIMIT 1))

它用Null值更新每一行

不知道如何使用Sponsors更新最后一行,Sponsor_parent列中的赞助商名称

用户表布局:

名字姓氏>新>sponsor_parentSpon_match我的测试91>0
Member_id用户名sponsor_idsponsor_username
15测试910测试1A0
140测试D3我的测试D315测试914

最终解决赞助商赞助商条目的更新命令

我遇到的问题是使用Select命令执行更新,该命令中使用了对同一表的两个引用这导致了一个重复问题,给出了此错误#1093-表"users"被指定了两次,既是"UPDATE"的目标,也是数据的单独来源

我必须从表"users"中选择最后一行,并使用它在同一表的另一列中查找赞助商名称,找出赞助商是谁,以便更新同一表中的新列。

因此,我使用这个Query命令得到的是一个嵌套内部联接命令,包括使用最后一行值命令的垂直查找(Vlookup(-ORDER BY member_id DESC LIMIT 1

最终的解决方案"更新"命令是将用户更新为u1内部联接(从用户中选择sponsor_username,其中username=(从用户ORDER BY member_id DESC LIMIT 1中选择spossor_username(为u2内部联接(从用户中选择member_id,其中member_id=member_idORDER BY member_idDESC LIMIT 1(作为u3打开u1.member_id=u3.member_id设置u1.sponsor_parent=u2.sponsor_username

最新更新