我正在使用MySql更新列Sponsor_Parent
的数据库用户的最后一行(Member_id = 140
(,其结果是选择列(Sponsor_username = Test91
(的最后一行将找到他们的Sponsor_username
也就是最后一行Sponsor_username
是Test91
,并且希望通过选择赞助商username = Test1A
的值来更新
因此将Test1A
放入最后一行Member_id = 140
的Sponsor_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
列中的赞助商名称
用户表布局:
Member_id | 用户名 | 名字姓氏sponsor_id | >sponsor_username | 新>sponsor_parentSpon_match||||
---|---|---|---|---|---|---|---|
15 | 测试91 | 我的测试910 | 测试1A | 0 | |||
140 | 测试D3 | 我的 | 测试D3 | 15 | 测试91 | >4 | 0
最终解决赞助商赞助商条目的更新命令
我遇到的问题是使用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