2012-02-16 79 views
1
的SQL比较

我试图像成才:,其中表1的值不是在表2中,并显示结果如表3

Select Items 
From Table1 
Where Not Exists (
    Select Items 
    From Table2 
    Where Table2.Items = Table1.Items) As Table3.Items 

,但不知何故没有工作,所以可以anywone告诉我怎样才能实现这一目标?

+0

你给“Table3”赋予结果是什么意思?结果应该插入table3中吗? – 2012-02-16 13:54:50

+0

你的意思是说SQL没有给出预期的结果,或者代码给你一个错误或者运行时没有给出预期的结果。你能在这里粘贴相关的代码吗? – ImranIlahi 2012-02-16 14:03:36

+0

表3实际上并不是之前创建的另一个表。 它只是将查询的结果显示为表3。 – 2012-02-16 14:31:33

回答

2

如果你想使用这一个新表,你可以试试这个:

Select Items 
Into Table3 
From Table1 
Where Not Exists (Select Items From Table2 Where Table2.Items = Table1.Items) 
+0

不错,但它创造临时或永久表? – 2012-02-16 14:45:42

+0

@BerkerYüceer - 这是创建一个新的永久表。如果您只想在另一个查询中使用它,但不想将其作为表创建,则可以将其用作派生表:“SELECT .. FROM(从表1中选择Itmes从表1不存在..... )AS Table3 – Lamak 2012-02-16 14:49:51

+0

是啊我试过那里,但似乎我误以为SELECT * FROM(....)AS TABLE3的用法。它现在的工作谢谢.. – 2012-02-16 14:52:26

1

如果您正在寻找t3行那些在t1存在,但不是在t2,尝试:

select t3.Items 
from table3 t3 
where exists 
     (
     select * 
     from table1 t1 
     where t1.Items = t3.items 
     ) 
     and not exists 
     (
     select * 
     from table2 t2 
     where t2.Items = t3.items 
     ) 
+0

我想你误会了我。我只使用Table3来显示Table1和Table2之间的比较结果,但这是另一个有用的答案,对我来说很有用,所以+1。 – 2012-02-16 14:48:42

1

另一种解决方案是except

select * 
from 
(
    Select Items 
    From Table1 
    except 
    Select Items 
    From Table2 
) as Table3 
+0

不错,我喜欢这个 – 2012-02-16 14:32:12

相关问题