我需要比較2個表(領域是代碼),並創建第三,當名稱匹配或喜歡(與每個表結果)如何比較兩個不同表中的相同字段?
表1:名稱姓代碼年齡
表2:地址城市。 代碼
我需要從表1和表2的代碼會導致一個新的表看出差別
每場都像a345694s3
文本謝謝。
我需要比較2個表(領域是代碼),並創建第三,當名稱匹配或喜歡(與每個表結果)如何比較兩個不同表中的相同字段?
表1:名稱姓代碼年齡
表2:地址城市。 代碼
我需要從表1和表2的代碼會導致一個新的表看出差別
每場都像a345694s3
文本謝謝。
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] & "*"));
我不知道,但你可以用where條件.. 前嘗試: select * from tab1 t1, tab2 t2 where 't1.code'='t2.code'
如果你得到的結果上面的代碼,然後讓它作爲一個子查詢!
如果你想看到哪些碼錶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相同的操作。
在Jet/ACE SQL中沒有JOIN形式需要OUTER關鍵字。您有INNER JOIN,LEFT JOIN和RIGHT JOIN,並且包括OUTER對執行沒有影響 - 它只是使SQL更加詳細,並且只要保存查詢,Jet/ACE就會去掉OUTER。因此,除非您動態地在代碼中編寫SQL,否則在使用OUTER關鍵字時沒有兼容性好處。 – 2011-01-29 01:19:37
從您的評論中,您希望找到導入不良的任何不匹配的行。我會先找到所有正確導入的匹配行,然後選擇該集中不存在的任何內容。
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
)
這會不會是一個快速查詢,但因爲它是完整性檢查它不需要在生產初期導入後運行,因此速度不是主要問題。
你能解釋一些關於`代碼`代表什麼和表如何相關?你爲什麼試圖比較兩組值?你需要什麼準確度?他們需要如何「喜歡」?我們應該從字符串的開始還是字符串的任何部分匹配?你如何知道每個表中的哪兩行進行比較?除了代碼列以外,它們是無關的表,要與table1.code = table2.code相關,它需要完全匹配。 – 2011-01-27 12:25:24
嗨!我需要看看是否在table2中代碼被切割(是唯一的代碼),因爲大量導入格式錯誤的xls(例如,它會刪除第一個0,因爲它認爲是數字字段)。所以我需要它必須匹配10個字母(字符串的任何部分)。該表不相關。 – stefano 2011-01-27 12:46:23