2011-01-27 210 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 
) 

這會不會是一個快速查詢,但因爲它是完整性檢查它不需要在生產初期導入後運行,因此速度不是主要問題。

相關問題