选择之前检查现有数据

时间:2013-07-18 15:59:34

标签: sql ms-access

最终结果是我想从查询中创建一个文件,然后我可以用它来导入另一个dB。我有产品编号(ITEM_NO),可以有两个相关的条形码(BARCOD)。我想确保TABLE_2提供的条形码不在TABLE_1中(因为有时会有)

TABLE_1(现有条形码)

ITEM_NO | BARCOD
-----------------
  001   |   A
  001   |   B
  002   |   C
  003   |   E
  003   |   F
  004   |   G
  005   |   I

TABLE_2(新条形码)

ITEM_NO | BARCOD
-----------------
 001    | B
 002    | D
 003    | F
 004    | H
 005    | J

所以我想要的输出文件是

ITEM_NO | BARCOD
-----------------
 002    | D
 004    | H
 005    | J

我的起点是:

SELECT TABLE_1.ITEM_NO, TABLE_2.ITEM_NO, TABLE_1.BARCOD, TABLE_2.BARCOD
FROM TABLE_2 INNER JOIN TABLE_1 ON TABLE_2.ITEM_NO=TABLE_1.ITEM_NO
WHERE TABLE_1.BARCOD<>TABLE_2.BARCOD
ORDER BY TABLE_1.ITEM_NO

但这不起作用,因为它将第1行表1与第1行表2进行比较,发现BARCOD不同并将其包含在查询中...误报。我想我想要的是一种从子查询创建字符串的方法,比如STRING_TEMP [1] = [A,B](请原谅我如何显示这个,不知道正确的约定是什么),所以a字符串基于TABLE_1.ITEM_NO的值,然后检查该字符串是否包含TABLE_2.BARCOD的值,其中TABLE_2.ITEM = TABLE_1.ITEM

希望这是足够的信息来描绘我想要做的事情......感谢adnavce提供的任何帮助,

Jordie Fike
www.kittyhawk.com

2 个答案:

答案 0 :(得分:0)

根据我的理解,你想要:

SELECT *
FROM TABLE_1
WHERE ITEM_NO IS NOT IN (SELECT DISTINCT ITEM_NO FROM TABLE_2)
ORDER BY ITEM_NO;

这将选择TABLE_1中尚未包含的所有数据{/ 1}}。

如果您希望TABLE_2中的所有数据都不在TABLE_2中,只需切换语句:

TABLE_1

我希望有所帮助,也就是你所追求的目标。

答案 1 :(得分:0)

看起来你想要

SELECT ITEM_NO, BARCOD
FROM TABLE_2
WHERE BARCOD NOT IN
    (SELECT BARCOD FROM TABLE_1)