2011-04-02 60 views

回答

1

有正确的方法,并有易于理解的方式。任何半路出家的SQL引擎就会把他们都到在后端同样的事情,所以我总是写一个简单的方法:

select * from A where id not in (select a_id from B)

+0

当您管理联合数据库时,此原则不适用。 – 2011-04-02 09:31:55

+0

@Johann Blais你是什么意思? – rvk 2011-04-02 10:05:05

+0

由于您只有一个数据库,因此它是无关紧要的。在联邦数据库中,两个表格可能来自不同的子数据库,从而带来一组新的优化问题。 – 2011-04-03 08:29:39

1
select 
    A.id, 
    A.Name 
from A 
    left join B on A.id = B.A_id 
where 
    B.A_id is null 
0

试试这个:

SELECT A.* 
    FROM A 
    LEFT JOIN B ON B.A_id = A.id 
WHERE B.a_id IS NULL 
1
SELECT * 
FROM TableA 
WHERE id IN (
    SELECT id 
    FROM TableA 
    EXCEPT 
    SELECT a_id 
    FROM TableB 
) 
0

而且有很多方法导致罗马或StackOverflow,这里有一个替代方案:

SELECT * FROM [A] AS [tblA] 
    WHERE NOT EXISTS (SELECT * FROM [B] AS [tblB] WHERE [tblB].[A_id] = [tblA].[id])