Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/82.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 是否有复杂的select查询来解决此问题_Mysql_Sql_Database_Select_Mariadb - Fatal编程技术网

Mysql 是否有复杂的select查询来解决此问题

Mysql 是否有复杂的select查询来解决此问题,mysql,sql,database,select,mariadb,Mysql,Sql,Database,Select,Mariadb,我需要对一个表进行查询,在这个查询中,我想将created_by的值替换为corsspende user first_name的值 因为一个用户创建了另一个用户,所以我想返回creater的真实姓名,而不是他的id 我试图深入研究查询类型,但它们太多了,内部联接、外部联接、左联接、变量,。。 我不知道哪个概念是解决方案[在此处输入图像描述]您将执行从该表返回到自身的内部联接: SELECT users.*, createdby.* FROM yourtable users INNE

我需要对一个表进行查询,在这个查询中,我想将created_by的值替换为corsspende user first_name的值 因为一个用户创建了另一个用户,所以我想返回creater的真实姓名,而不是他的id

我试图深入研究查询类型,但它们太多了,内部联接、外部联接、左联接、变量,。。
我不知道哪个概念是解决方案[在此处输入图像描述]

您将执行从该表返回到自身的内部联接:

 SELECT users.*, createdby.*
 FROM yourtable users
     INNER JOIN yourtable createdby
        ON users.created_by = createdby.id
为此,FROM子句中的每个表都会获得一个别名。第一次使用它时,我称之为用户,第二次称之为createdby。这使得在SQL的其余部分中,哪个表被引用以及为什么被引用变得很明显

我们将第一个表的创建对象连接到第二个表的id。本质上,第二个表包含用户创建的_的属性


您只需将yourtable换成实际的表名,并可能将这些*换成您希望从每个表中得到的实际字段

这应该由客户端代码而不是查询来处理,因为它会导致混淆。如果您真的需要它,只需获取first_name列值,并将其作为create_by返回,如下所示:


选择第一个\u名称作为“从用户创建\u”

哦,谢谢,但我需要完成:我的uset表有一个列“create_by”,我想用另一个值返回这个列,而不是返回到当前用户的已创建用户的id,我想返回其他值,如“first_name”,你能帮我形成这样一个查询吗?该查询采用“create_by”并搜索此id的用户名,然后将此名称返回到同一列或作为一个新变量。我尝试了这个方法,但不起作用选择user.id,user.first_name,REPLACEcreate_by,选择u.first\u name from users as u where user.create\u by=u.id as create\u by from users as users我恐怕不明白你想要什么。请重写上面的问题,并根据粘贴为图像的样本数据提供所需结果。