C# 比较(联接)表并获取新记录

C# 比较(联接)表并获取新记录,c#,.net,sqlite,datatable,compare,C#,.net,Sqlite,Datatable,Compare,我在这里遇到了麻烦。。假设我有两个表,记录之间唯一唯一的区别就是它们的条形码。我正在使用以下代码: INSERT INTO rez1(barcode,No_,lik_pagr,inventkiekis,Vidurkis,skirias) SELECT t2.barcode, t2.No_, t1.lik_pagr, t2.lik_pagr, ROUND(t2.lik_pagr - t1.lik_pagr,3) AS 'Vidurkis', CASE WHEN (t1.lik_pagr - t

我在这里遇到了麻烦。。假设我有两个表,记录之间唯一唯一的区别就是它们的条形码。我正在使用以下代码:

INSERT INTO rez1(barcode,No_,lik_pagr,inventkiekis,Vidurkis,skirias)
SELECT t2.barcode, t2.No_, t1.lik_pagr, t2.lik_pagr, ROUND(t2.lik_pagr - t1.lik_pagr,3) AS   'Vidurkis', CASE WHEN (t1.lik_pagr - t2.lik_pagr)<>0 THEN 1 
ELSE 0 
END
FROM likuciai AS t1
INNER JOIN pirmoji AS t2 
ON t1.barcode = t2.barcode;
插入rez1(条形码、No_、lik_pagr、inventkiekis、Vidurkis、skirias)
选择t2.barcode、t2.No、t1.lik_pagr、t2.lik_pagr、ROUND(t2.lik_pagr-t1.lik_pagr,3)作为“Vidurkis”,如果(t1.lik_pagr-t2.lik_pagr)为0,则选择1
其他0
结束
从likuciai到t1
内连接pirmoji AS t2
在t1.barcode=t2.barcode上;
我这里的问题是——它只选择两个表中都存在的记录(在条形码上),但如何也能获得条形码不等于表t1的记录?
因为t2始终是用户更新的表,t1是旧表,我必须对这些记录显示并应用与匹配记录相同的算法。

您需要使用左联接。只需将“内部”替换为“左侧”。这将从t1获取所有记录,并为t2值返回NULL,其中t1.barcode在t2中没有匹配的条形码。

我很难说出我想要什么,但我需要从t2而不是从t1获取所有记录。SQLite没有正确的连接,因此我必须从t1.barcode=t2.barcode更改positions;在t2.barcode=t1.barcode上进行转换;使用左连接?谢谢/那我怎么知道哪些唱片是新唱片呢?@Tommix:我建议你去找一些关于左键加入的帮助。从本质上讲,尽管左连接表示我想要从左手表(即第一个表)到右表(即第二个表)中匹配的所有内容,如果不匹配则为null。添加where子句来表示“right table field identity is null”将为您提供仅在左表中而不在右表中的记录。因此,这只是把桌子放在正确位置的一个例子。:)@Chris我已经在我的代码中取得了很好的位置,并且我正在获得新的记录,但是我现在有一个问题——我如何知道哪些是新的?另外,如何知道表2中哪些记录不像t1中那样存在?因为可能有人删除了t2的记录-我也必须知道。仅使用SQL:dps完成这项任务有点困难,我正在使用DatagridView显示记录。顺便说一句,在哪里可以找到剩下的桌子?从哪里来的那个我不知道你怎么知道什么是新的,甚至不知道你说的新是什么意思。您可能还需要进行第二次查询才能在另一个表中找到孤立记录。最简单的回答是如何知道剩下的是哪张桌子。如果您的语句看起来像
SELECT*fromt1 LEFT JOIN t2 ON t1.x=t2.x
,那么t1就是左边的表。基本上,left始终位于left JOIN语句之前。