表1和表2的主键(key1,key2)相同。表3是用户定义的表,其中有一个字段table5与table2相同。我需要从表1和表2中选择行,其中表2中的field5在表3中。我需要以与table3相同的顺序获取行。

表格1

key1 key2 field1 field2

表2

key1 key2 field3 field4 field5

用户定义表

领域5

我在想的查询是

select a.key1, a.key2, a.field1, a.field2, b.field3, b.field4
from table1 as a INNER JOIN table2 as b ON a.key1 = b.key1 AND a.key2 = b.key2
where b.field5 in (select field5 from table3)

这不会以与表3中相同的顺序显示行。

我需要这样的东西来维持秩序吗?
select a.key1, a.key2, a.field1, a.field2, d.field3, d.field4 from
table1 as a INNER JOIN
 (select b.key1, b.key2, b.field3, b.field4
  from table2 as b INNER JOIN table3 as c
  ON b.field5 = c.field5) as d
WHERE a.key1 = d.key1 AND a.key2 = d.key2

最佳答案

使用order by子句时,最终结果中仅提供订单。

如果要“按与table3相同的顺序”,则必须编写适当的order by子句以重新创建在table3中具有的顺序。

如果连接使事情进展得更快,它可以自由地加扰行。

关于sql - 如何在执行SQL连接时保持顺序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5743373/

10-12 14:37
查看更多