[英]confusion with multiple conditions in where clause of select statement
我是sql新手。 我在数据库中有以下表格。
table : person
columns : id, first_name, last_name, age
values : 0, 'Zed', 'Shaw', 50
table : pet
columns : id, name, age, dead
values : 0, 'Dog', 2, 0
1, 'Cat', 2, 1
table : person_pet
columns : person_id, pet_id
values : 0, 0
0, 1
现在,我需要找到Zed拥有的宠物。 我写了选择声明,以查找Zed拥有的宠物,如下所示。
SELECT pet_id, pet_name, pet_age, pet_dead FROM person, pet, person_pet WHERE person.first_name = 'Zed' and person.id = person_pet.person_id and pet.id = person_pet.pet_id;
作者写的如下。
SELECT pet_id, pet_name, pet_age, pet_dead FROM person, pet, person_pet WHERE pet.id = person_pet.pet_id AND person_pet.person_id = person.id AND person.first_name = 'Zed';
两个SELECT语句都可以正常工作。 因此它说WHERE子句中条件的顺序无关紧要。 我的理解正确吗,这2条SELECT语句的性能是否有所不同?
where
子句中的顺序无关紧要,查询编译器将对其进行优化。
但是现在使用显式联接语法:
SELECT pet_id, pet_name, pet_age, pet_dead
FROM person
JOIN person_pet ON person.id = person_pet.person_id
JOIN pet ON pet.id = person_pet.pet_id
WHERE person.first_name = 'Zed'
这样,您就可以区分on
子句中的表链接和where
子句中的实际数据过滤。 您可以使用与默认inner join
联接不同的联接。
顺便说一句-不要使用0
als id
。 通常从1
开始。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.