在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
答案 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引擎可以在内部对行进行排序以将表连接在一起,然后按顺序返回行)