SQL是否保证将联接的结果组合在一起?

时间:2014-06-12 07:23:54

标签: mysql sql sql-server oracle postgresql

在SQL中,当连接两个表时,用户是否保证将生成的元组组合在一起?

例如:在下面的例子中,结果是否会一直列出,显示所有宠物按其所有者分组?

表所有者

ID OWNER_NAME
1  Alice
2  Bob
3  Carol
4  Dave

TABLE PETS

OWNER_ID PET_NAME
1        Furry
2        Doggy
2        Jonny
1        Ellie
3        Thunder

查询:

SELECT OWNER_NAME, PET_NAME
FROM OWNERS
JOIN PETS ON OWNERS.ID = PETS.OWNER_ID;

结果(?):

OWNER_NAME PET_NAME
Alice      Furry
Alice      Ellie
Bob        Doggy
Bob        Jonny
Carol      Thunder

1 个答案:

答案 0 :(得分:7)

要保证结果数据集中行的顺序,您必须使用order by关键字

select
    o.owner_name, p.pet_name
from owners as o
    inner join pets as p on p.owner_id = o.id
order by o.owner_name, p.pet_name

否则行可以按任何顺序排列(例如,SQL引擎可以在内部对行进行排序以将表连接在一起,然后按顺序返回行)