如何在两个表之间订购?

时间:2017-04-10 10:00:58

标签: mysql sql

在我的程序中我有两个查询(结果是创建一个顶部),第一个查询获得顶部位置,谁在该位置,例如第一个位置结果将是这样的:

POSITION: 1 ID: 203

如果POSITION是位置而ID是用户ID,那么为了获取用户名而不显示ID,我会进行另一个查询,我输入所有tops ID' s查询返回给我用户名。

问题在于,在第一个查询中,我能够获得最高订单但是当我在第二个查询中输入ID时,返回的信息是一个奇怪的顺序而我是无法知道哪个用户名从顶部到哪个位置。

PS:第二个查询表包含两列(ID和USERNAME),第一个表还包含两列(POSITION和ID)。

3 个答案:

答案 0 :(得分:0)

使用加入查询

Select B.username from table1 A Join table2 B on A.Id = b.id order by A.POSITIONID asc limit 1

答案 1 :(得分:0)

SELECT ft.user_id, ft.position, st.username
FROM first_table AS ft
LEFT JOIN second_table AS st
ON ft.user_id = st.user_id
ORDER BY ft.user_id

其中first_table是具有位置和ID的表的名称,second_table是具有id和用户名的表的名称。

使用此查询,您将获得所需的所有数据(ID,位置和用户名),只需向DB查询一次。

答案 2 :(得分:0)

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

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