2011-11-16 72 views
0

我試圖形成檢查重複的用戶ID WITHIN TABLE1TABLE2 SQL語句(通過加入表1表2一起發現重複的用戶id不應該被記錄)SQL檢查重複的用戶ID

下面是我的表信息,並且我已經實現當前檢查:

表1用戶標識用戶名

表2用戶名狀態

表3用戶名用戶名問題

目前我只有一臺符合以上3個檢查3 SELECT語句並將結果插入到表3:

1. 
    Insert in to Table3(userid,issue) 
     SELECT t1.userid,'check no.1' 
     FROM table1 t1 
     FULL OUTER JOIN table2 t2 ON t1.userid = t2.userid 
     where t1.userid not null and t2.userid is null 
2. 
    Insert in to Table3(userid,issue) 
     SELECT t1.userid,'check no.2' 
     FROM table1 t1 
     inner JOIN table2 t2 ON t1.userid = t2.userid 
     where t2.status = 'DELETE' 

3. 
    Insert in to Table3(userid,issue) 
     SELECT t2.userid,'check no.3' 
     FROM table2 t2 
     right outer JOIN table2 t2 ON t1.userid = t2.userid 
     where t2.status <> 'DELETE' and t1.userid is null 

現在,我想要一個第四SQL查詢,它檢查重複用戶ID表1表2自己內部,不是通過比較2個表在一起,而是每個表單獨。

如果發現任何重複,插入記錄到表3

ISSUE = '在發現表1重複的用戶ID',和

ISSUE =「重複的用戶ID發現在表2'

謝謝你們。

+0

這聽起來像你的第四個查詢應該非常像第二個,只是沒有「where」子句 - 不適合你嗎? –

+0

在我看來,你需要在單個表中找到重複的用戶ID,例如Table1中有兩個UserID值爲1的值?這些查詢是可能的,但這種約束可以通過主鍵/唯一索引更好地解決。 – SWeko

+0

嗨Jon Skeet,我發現只有在每個* Table1 *和* Table2 *本身內發現重複記錄時插入記錄的sql查詢。因此,這些問題將是'Table1中發現的重複記錄'和'Table2中發現的重複記錄'。謝謝 – gymcode

回答

1

從你的問題的答案應該是:

insert into table3(userid,issue) 
select t2.userid, 'dup user id'from table1 t1 join table2 t2 
where t1.userid = t2.userid 

但是我不知道,如果你想別的東西archieve。

+0

沒有把我的問題弄清楚,我發現只有在每個Table1和Table2本身內找到重複記錄時纔會插入記錄的sql查詢,因此,這些問題將是'Ta中找到的重複記錄ble1'和'Table2中找到的重複記錄'。 – gymcode

+0

你有主鍵嗎?你在用什麼數據庫? –

+0

SQL Server。我無法設置主鍵,因爲這些* Table1 *和* Table2 *都假設包含外部Excel數據,我將檢查每個表內的任何重複的用戶標識。如果我設置了主鍵,那麼當我將excel數據導入到數據庫時可能會收到錯誤信息? – gymcode