我需要弄清楚如何使用 T-SQL 查找特定的记录组,但我无法弄清楚我需要如何创建WHERE
子句来执行此操作。
我有一个正在使用的 SQL 2008 R2 系统,在这个数据库中有几个表。一个包含人事记录,另一个包含地址。地址通过外键关系与人事记录相关。因此,例如,要获取所有人员及其所有相关地址的列表(一个人可能有多个地址),我可以这样写:
SELECT id, name FROM personnel p
INNER JOIN address a
ON p.id = a.personnelid
但是,每个地址都有一个名为 的列isprimary
,即 0 或 1。我需要做的是弄清楚如何找到所有没有关联地址且isprimary
设置为 1 的人员。或者没有主地址的记录。
目前我的想法是建立一个临时表,其中包含未标记为主要地址的人员。然后循环遍历这些并构建一个具有主地址的子集。
然后从非主要人员的结果中减去主要人员表,我应该有我的列表。但是,我认为必须有一种更优雅的方式来做到这一点。有任何想法吗?