表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/