Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用MySQL在两列中填充名称?_Mysql_Sql - Fatal编程技术网

如何使用MySQL在两列中填充名称?

如何使用MySQL在两列中填充名称?,mysql,sql,Mysql,Sql,总结 我的数据库中有两个表。第一个表包含网页名称和两列,其中包含创建和上次修改这些网页的用户ID。第二个表格包含了这些人的姓名 如何在表1中填充这些名称?我确实提到了一个类似的问题,但这不起作用 表一(页面信息): +------------+---------+----------+ |页面标题|创建者|修改器| +------------+---------+----------+ |第1页| 1 | 2| |第2页| 1 | 2| |第3页| 2 | 2| |第4页| 2 | 1| |第5

总结

我的数据库中有两个表。第一个表包含网页名称和两列,其中包含创建和上次修改这些网页的用户ID。第二个表格包含了这些人的姓名

如何在表1中填充这些名称?我确实提到了一个类似的问题,但这不起作用

表一(页面信息):

+------------+---------+----------+ |页面标题|创建者|修改器| +------------+---------+----------+ |第1页| 1 | 2| |第2页| 1 | 2| |第3页| 2 | 2| |第4页| 2 | 1| |第5页| 2 | 1| +------------+---------+----------+ 表二(用户表):

+---------+-------+ |用户ID |名称| +---------+-------+ |1 |标记| |2 |凯文| +---------+-------+ 我想做的是:

+------------+---------+----------+ | Page Title | Creator | Modifier | +------------+---------+----------+ | Page 1 | Mark | Kevin | | Page 2 | Mark | Kevin | | Page 3 | Kevin | Kevin | | Page 4 | Kevin | Mark | | Page 5 | Kevin | Mark | +------------+---------+----------+ +------------+---------+----------+ |页面标题|创建者|修改器| +------------+---------+----------+ |第1页|马克|凯文| |第2页|马克|凯文| |第3页|凯文|凯文| |第4页|凯文|马克| |第5页|凯文|马克| +------------+---------+----------+
试试这样的

SELECT t1.PageTitle,t2.Name,t3.Name
FROM Table1 t1
LEFT JOIN Table2 t2 ON t1.Creator = t2.UserID
LEFT JOIN Table2 t3 ON t1.Modifier = t3.UserID

您只需加入两次:

select p.*, uc.name as creator, um.name as modifier
from pages p join
     users uc
     on p.Creator = uc.UserID join
     users um
     on p.Modifier = um.UserID;

如果
创建者
/
修饰符
的值可能为

则应使用
左联接
最大值
非常简单。非常感谢。我取了最大值,但它起作用了。@Punkrock760。这也是第一个正确答案。然而,作为OP,你可以接受你喜欢的任何答案。
SELECT t1.PageTitle,t2.Name,t3.Name
FROM Table1 t1
LEFT JOIN Table2 t2 ON t1.Creator = t2.UserID
LEFT JOIN Table2 t3 ON t1.Modifier = t3.UserID
select p.*, uc.name as creator, um.name as modifier
from pages p join
     users uc
     on p.Creator = uc.UserID join
     users um
     on p.Modifier = um.UserID;