假设我想找出父母和我父母在同一个班级的所有孩子。我可以这样写查询:
SELECT child.* FROM child
JOIN parent ON child.ParentID = parent.ID
WHERE parent.class IN (SELECT parent1.class
FROM parent1 JOIN child1
ON parent1.id = child1.parentID
WHERE child1.ID = MyID)
不知何故,这感觉好像我做错了,因为我(大约)写了两次相同的连接,但我想不出改进它的方法(我可以想出嵌套子查询的其他方法,但没有其中看起来更整洁)。
有没有我想念的干净的方法?或者我这样做对吗?
编辑:正如 GolzeTrol 在他对这个问题的(完整)回答中指出的那样,将孩子限制为只有一个父母是很奇怪的。他是完全正确的,我不打算在实际家庭上运行此查询,而是在其他一些表上运行此查询,其中每个孩子实际上只与一个父母相关联。