【发布时间】:2008-12-15 22:02:21
【问题描述】:
例如,我有一张宠物桌和一张丢失宠物桌。我想通过 1 次加入和没有子选择来获得所有不会丢失的宠物。那可能吗?典型的连接只返回两个表中的结果。
【问题讨论】:
例如,我有一张宠物桌和一张丢失宠物桌。我想通过 1 次加入和没有子选择来获得所有不会丢失的宠物。那可能吗?典型的连接只返回两个表中的结果。
【问题讨论】:
您描述的是与标准 INNER JOIN 相比的 OUTER JOIN。谷歌或检查你的文档——我相信你会找到很多例子。 :)
SELECT * FROM pets AS p
LEFT OUTER JOIN lost-pets AS lp
ON p.name = lp.name
哪里 lp.id 是 NULL
【讨论】:
SELECT PETS.NAME
FROM PETS
LEFT OUTER JOIN LOST_PETS
ON PETS.PET_ID = LOST_PETS.PET_ID
WHERE LOST_PETS.PET_ID IS NULL;
【讨论】:
有可能,是的,说:
SELECT *
FROM pets LEFT OUTER JOIN pets-lost ON pets.id = pets-lost.id
WHERE pets-lost.id IS NULL;
【讨论】:
为什么不做 where not exists (select * from Lost ...)?它是一个子选择,但我不明白为什么会出现问题。
【讨论】: