Mysql 如何在两张桌子之间点菜?
在我的程序中,我有两个查询(结果是创建一个top),第一个查询获取top位置以及谁在该位置,例如,第一个位置结果类似于:Mysql 如何在两张桌子之间点菜?,mysql,sql,Mysql,Sql,在我的程序中,我有两个查询(结果是创建一个top),第一个查询获取top位置以及谁在该位置,例如,第一个位置结果类似于: POSITION: 1 ID: 203 其中POSITION是POSITION,ID是userid,然后为了获取用户名而不显示ID,我做了另一个查询,输入所有tops ID,查询返回用户名 问题是,在第一次查询中,我能够获得最上面的顺序,但当我在第二次查询中输入ID时,返回的信息的顺序很奇怪,我无法知道哪个用户名位于最上面的哪个位置 PS:第二个查询表包含两列(ID和用户名
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
最好提供示例表数据和预期输出。最好提供示例表数据和预期输出