Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/62.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,在我的程序中,我有两个查询(结果是创建一个top),第一个查询获取top位置以及谁在该位置,例如,第一个位置结果类似于: POSITION: 1 ID: 203 其中POSITION是POSITION,ID是userid,然后为了获取用户名而不显示ID,我做了另一个查询,输入所有tops ID,查询返回用户名 问题是,在第一次查询中,我能够获得最上面的顺序,但当我在第二次查询中输入ID时,返回的信息的顺序很奇怪,我无法知道哪个用户名位于最上面的哪个位置 PS:第二个查询表包含两列(ID和用户名

在我的程序中,我有两个查询(结果是创建一个top),第一个查询获取top位置以及谁在该位置,例如,第一个位置结果类似于:

POSITION: 1 ID: 203
其中POSITION是POSITION,ID是userid,然后为了获取用户名而不显示ID,我做了另一个查询,输入所有tops ID,查询返回用户名

问题是,在第一次查询中,我能够获得最上面的顺序,但当我在第二次查询中输入ID时,返回的信息的顺序很奇怪,我无法知道哪个用户名位于最上面的哪个位置

PS:第二个查询表包含两列(ID和用户名),第一个表也包含两列(位置和ID)。

使用连接查询

Select B.username from table1 A Join table2 B on A.Id = b.id order by A.POSITIONID asc limit 1
使用联接查询

Select B.username from table1 A Join table2 B on A.Id = b.id order by A.POSITIONID asc limit 1
其中,
first_table
是带有位置和ID的表名,
second_table
是带有ID和用户名的表名

通过此查询,您只需向数据库进行一次查询,即可获得所需的所有数据(ID、位置和用户名)

其中,
first_table
是带有位置和ID的表名,
second_table
是带有ID和用户名的表名


通过此查询,您只需向数据库进行一次查询即可获得所需的所有数据(ID、位置和用户名)。

如果您希望返回第一个表中的所有数据,无论第二个表是否包含这些数据 然后您可以使用leftouterjoin,查询应该是

SELECT f1.id as user_id, f1.position, s1.username
FROM first_table AS f1
LEFT JOIN second_table AS s1
ON f1.id = s1.id
ORDER BY f1.position asc
但您只希望看到两个表都有的数据,然后可以使用内部联接 那么查询应该如下所示

 SELECT f1.id as user_id, f1.position, s1.username
FROM first_table AS f1
inner JOIN second_table AS s1
ON f1.id = s1.id
ORDER BY f1.position asc

如果要返回第一个表的所有数据,无论第二个表是否包含 然后您可以使用leftouterjoin,查询应该是

SELECT f1.id as user_id, f1.position, s1.username
FROM first_table AS f1
LEFT JOIN second_table AS s1
ON f1.id = s1.id
ORDER BY f1.position asc
但您只希望看到两个表都有的数据,然后可以使用内部联接 那么查询应该如下所示

 SELECT f1.id as user_id, f1.position, s1.username
FROM first_table AS f1
inner JOIN second_table AS s1
ON f1.id = s1.id
ORDER BY f1.position asc

最好提供示例表数据和预期输出。最好提供示例表数据和预期输出