我需要从临时表更新表。因此,我需要比较并找出要从临时表导入的主表中没有的行。 我的表格如下,
line_id -> nvarchar(20)
order_no -> nvarchar(20)
line_no ->int
两个表都有相同的字段,但临时表有更多的最新记录要带到主表。我正在使用;
INSERT INTO main_table
SELECT * FROM temp_table t
WHERE t.line_id NOT IN (SELECT line_id FROM main_table)
但条件WHERE t.line_id NOT IN (SELECT line_id FROM main_table)
并未带来任何订单行。
但是,如果使用order_no
而不是line_id
,则会进行比较并开始显示数字或订单行。但order_no
不是唯一的密钥,并且该比较不会返回所需的所有行。
如果你能帮助我,那就太好了。提前感谢!
答案 0 :(得分:2)
Not-in's可以给出奇怪的麻烦。这是对同一个想法的不同看法。
Insert Into main_table
select t.*
from temp_table t
left outer join main_Table m
on t.line_id=m.line_id
where m.line_id is null
答案 1 :(得分:0)
尝试以下方法:
INSERT INTO main_table
SELECT * FROM temp_table t
WHERE LTRIM(RTRIMt.line_id)) NOT IN (SELECT LTRIM(RTRIM(line_id)) FROM main_table)