SQL是一种高效的实现方法,而不是

SQL是一种高效的实现方法,而不是,sql,tsql,join,many-to-many,Sql,Tsql,Join,Many To Many,假设我们有三个表,一个用于个人id、个人名称、街道名称,…,一个用于城区id、街道名称,…,另一个用于街道1-N对地区id、街道名称。我想选择不住在由district_name T-SQL environment标识的特定地区的人 SELECT P.Person_id FROM persons P JOIN Districts D on D.Name='1. district' JOIN Districts_Streets S on S.District_ID=D.Distr

假设我们有三个表,一个用于个人id、个人名称、街道名称,…,一个用于城区id、街道名称,…,另一个用于街道1-N对地区id、街道名称。我想选择不住在由district_name T-SQL environment标识的特定地区的人

 SELECT P.Person_id
   FROM persons P
   JOIN Districts D on D.Name='1. district'
   JOIN Districts_Streets S on S.District_ID=D.District_ID
   WHERE ????
不会做你想做的事

SELECT P.Person_id
FROM persons P JOIN
     Districts_Streets S 
     ON P.street_name = S.street_name JOIN
     Districts D 
     ON S.District_ID = D.District_ID
WHERE D.Name <> '1. district';

您确实需要正确设置联接。

p和d之间没有联接条件?您的效率指标是什么?查询中的字符数最少?最小化I/O@HABO执行时间是关键。另一个解决方案是:从Person P LEFT JOIN中选择P.PersonID从Districts\u Streets中选择S.Street\u Name在D.District\u ID=S.District\u ID中选择D.Name'1。L.Street\u Name=P.Street\u Name所在地区的L.Street\u NameNULL@ZoltanHernyak . . . 为什么要对如此简单的逻辑使用左连接?