我有两个表连接,以便我可以比较一个字段并从一个表中提取记录,其中被比较的字段不在两个表中:
Table A
---------
Comp Val
111 327
112 234
113 265
114 865
Table B
-----------
Comp2 Val2
111 7676
112 5678
所以我正在做的是在Comp-Comp2上连接两个表,然后我希望从表A中选择表B中不存在corrssponding Comp的所有值。在这种情况下,查询应该导致:< / p>
Result
---------
Comp Val
113 265
114 865
以下是查询:
select * into Result from TableA
inner join TableB
on (TableB.Comp2 = TableA.Comp)
where TableB.Comp2 <> TableA.Comp
问题是,它从两个表中提取值。有没有办法单独从TableA中选择值而不明确指定字段?
答案 0 :(得分:8)
只需在*
前加上所需的表名称,如下所示:
select TableA.* into Result from TableA
inner join TableB
on (TableB.Comp2 = TableA.Comp)
where TableB.Comp2 <> TableA.Comp
答案 1 :(得分:5)
我想你想要这个,但是:
select *
from TableA a
where
not exists (select b.Comp2 from TableB b where a.Comp1 = b.Comp2)
这将在A中找到B中不存在的所有记录。
答案 2 :(得分:1)
您还可以执行左连接,然后只返回不匹配的行:
SELECT TableA.*
FROM TableA
LEFT JOIN TableB
ON TableA.Comp = TableB.Comp2
WHERE TableB.Comp IS NULL
您可以像这样限制列返回,但通常最好不要使用*,而是命名所有列。
答案 3 :(得分:1)
SELECT a.*
FROM tblA a,tblB b
WHERE a.comp <> b.comp
答案 4 :(得分:0)
对我来说就像这样。表用于测试
select ov_item.*, ov.data_fecha from ov_item
inner join ov
on ov_item.id_ov = ov.id
where id_vendedor = 50 or id_tecnico = 50