2011-01-27 161 views
0

我需要比较2个表(领域是代码),并创建第三,当名称匹配或喜欢(与每个表结果)如何比较两个不同表中的相同字段?

表1:名称姓代码年龄

表2:地址城市。 代码

我需要从表1和表2的代码会导致一个新的表看出差别

每场都像a345694s3

文本

谢谢。

+0

你能解释一些关于`代码`代表什么和表如何相关?你为什么试图比较两组值?你需要什么准确度?他们需要如何“喜欢”?我们应该从字符串的开始还是字符串的任何部分匹配?你如何知道每个表中的哪两行进行比较?除了代码列以外,它们是无关的表,要与table1.code = table2.code相关,它需要完全匹配。 – 2011-01-27 12:25:24

+0

嗨!我需要看看是否在table2中代码被切割(是唯一的代码),因为大量导入格式错误的xls(例如,它会删除第一个0,因为它认为是数字字段)。所以我需要它必须匹配10个字母(字符串的任何部分)。该表不相关。 – stefano 2011-01-27 12:46:23

回答

0
SELECT u.iduser, a.idaccount, u.usercode_user, a.usercode_accounts 
FROM users AS u, accounts AS a 
WHERE (((a.usercode_accounts) Like "*" & [u].[usercode_user] & "*")); 
0

我不知道,但你可以用where条件.. 前尝试: select * from tab1 t1, tab2 t2 where 't1.code'='t2.code'

如果你得到的结果上面的代码,然后让它作为一个子查询!

0

如果你想看到哪些码表1中的对比表2,试了FULL OUTER JOIN

SELECT t1.code AS T1, t2.code as T2 
FROM table1 t1 
FULL OUTER JOIN table t2 
     ON t1.code = t2.code 

结果:

T1  T2 
==== ==== 
A  NULL --'A' is in table1 but not table2 
NULL B  --'B' is in table2 but not table1 
C  C  --'C' is in both tables 

编辑

为FULL OUTER JOIN在MS Access中不可用,您可以使用INNER JOIN,LEFT OUTER JOIN和RIGHT OUTER JOIN来实现与0123相同的操作。

+0

在Jet/ACE SQL中没有JOIN形式需要OUTER关键字。您有INNER JOIN,LEFT JOIN和RIGHT JOIN,并且包括OUTER对执行没有影响 - 它只是使SQL更加详细,并且只要保存查询,Jet/ACE就会去掉OUTER。因此,除非您动态地在代码中编写SQL,否则在使用OUTER关键字时没有兼容性好处。 – 2011-01-29 01:19:37

0

从您的评论中,您希望找到导入不良的任何不匹配的行。我会先找到所有正确导入的匹配行,然后选择该集中不存在的任何内容。

SELECT * 
FROM table1 
WHERE code NOT IN (
    -- find all the matching values of code which imported correctly 
    SELECT code 
    FROM table1 
     JOIN table2 ON table1.code = table2.code 
) 

这会不会是一个快速查询,但因为它是完整性检查它不需要在生产初期导入后运行,因此速度不是主要问题。

相关问题