我对SQL查询有一点问题:我的'TableA'有一个字段'TableA.b',其中包含'TableB'的ID . 我想从'TableB'中选择没有ID等于任何字段'TableA.b'的所有行 . 换句话说,我需要来自TableB的每一行,而不是TableA中任何行所引用的那一行 . 我试过像这样的查询:
SELECT DISTINCT TableB.* FROM TableA, TableB Where TableA.b != TableB.ID
但结果包含一个也由否定返回的行,即两个字段具有相同值的行 . 有任何想法吗?
5 回答
首先,从
TableA
中选择所有ID:然后使用该结果通过使用上述查询作为子查询选择
TableB
中具有此set中不存在的id的所有行:希望这可以帮助 .
在SELECT Query中使用
NOT IN
.你需要的是LEFT (or RIGHT) JOIN .
虽然可以使用子查询来执行相同的操作,但在某些otehr答案中也是如此 . 联接通常是faster .
你可以试试这个
您也可以使用右连接 . 试试这个: