内部连接表但仅从一个表中选择

Kie*_*ith 5 sql sql-server sql-server-2008

我有两个表连接,以便我可以比较一个字段并从一个表中提取记录,其中被比较的字段不在两个表中:

Table A
---------
Comp   Val
111    327
112    234
113    265
114    865


Table B
-----------
Comp2   Val2
111     7676
112     5678
Run Code Online (Sandbox Code Playgroud)

所以我正在做的是在Comp-Comp2上连接两个表,然后我希望从表A中选择表B中不存在corrssponding Comp的所有值.在这种情况下,查询应该导致:

Result
---------
Comp   Val
113    265
114    865
Run Code Online (Sandbox Code Playgroud)

这是查询:

select * into Result from TableA
inner join TableB
on (TableB.Comp2 = TableA.Comp)
where TableB.Comp2 <> TableA.Comp
Run Code Online (Sandbox Code Playgroud)

问题是,它从两个表中提取值.有没有办法单独从TableA中选择值而不明确指定字段?

sst*_*tan 10

只需在前面*加上所需的表名,如下所示:

select TableA.* into Result from TableA
inner join TableB
on (TableB.Comp2 = TableA.Comp)
where TableB.Comp2 <> TableA.Comp
Run Code Online (Sandbox Code Playgroud)


Chr*_*ele 6

我想你想要这个,但是:

select  *
    from TableA a
    where
        not exists (select b.Comp2 from TableB b where a.Comp1 = b.Comp2)
Run Code Online (Sandbox Code Playgroud)

这将找到A中B中不存在的所有记录.


小智 5

SELECT a.* 
FROM tblA a,tblB b 
WHERE a.comp <> b.comp
Run Code Online (Sandbox Code Playgroud)