0

这是我正在尝试的查询:

UPDATE toondb SET tusername = (select username FROM user WHERE userid='1') WHERE (select username FROM user WHERE userid='1') != (select tusername from toondb where tuserid= '1')

我打了这个,希望它会工作。请让我试着解释一下。

我有一张名为“toondb”的表。toondb 有不同的列。在这种特殊情况下,我将重点关注此表中的“tusername”和“tuserid”列。
“tusername”列包含用户的用户名,“tuserid”列包含用户的用户标识。当他们通过表单提交信息时,“tusername”和“tuserid”列会自动填充他们在论坛上的用户名和用户 ID。

现在,另一个表“用户”是信息的来源。'user' 表中有 'userid' 和 'username' 列。
我的用户 ID 是 1,我的用户名是什么

所以.. 我自己在“toondb”表中有一行。我的行的用户 ID 当前设置为 1(因为用户 ID 永远不会更改)。但是,用户名设置为“管理员”。

好吧,由于我的新用户名是“whatever”并且不再是“Admin”,所以我需要一个可以设置为自动运行的查询,该查询将检查“toondb”以使每个人的用户 ID 与他们的 tusername 匹配。

例如
检查 toondb 表
看到用户 ID 为 1
看到用户名设置为 'Admin'
检查用户表
看到用户 ID 为 1
看到用户名现在设置为 'whatever'
更新 toondb 以将他们的 tusername 更改为 'whatever',其中他们的用户 ID 为 '1'。

我知道基本的 MySQL,所以有时我可以问一些愚蠢的问题.. ;(

只是为了澄清..
'tusername' 和 'tuserid' 是toondb表中的列 'username' 和 'userid' 是用户
表 中的列用户表中
的值总是准确的。用户表中“用户名”列中的值必须使用最新信息 填充toondb表中“tusername”列中的值。

4

1 回答 1

0

正如我评论的那样,您应该避免在两个表中都有用户名,但是如果有必要,您可以使用触发器在更改用户名时更新用户名

于 2013-05-12T23:28:53.507 回答