2011-12-05 53 views
-1

我有一個列的表名爲記錄選擇所有從表和文件「的test.txt」載:除了從文件

111111AAAA 
222222BBBB 
3333DDDDDD 
..... 

的記錄test.txt的具有相同鍵入「a」列。 如何從A中選擇除「test.txt」中的記錄以外的所有記錄?

更新: 我試過3種方法,結果不相等。真奇怪!

// 7073 records -- Using NOT IN 
SELECT * from mt_users WHERE TERMINAL_NUMBER_1 NOT IN (SELECT TERMINAL_NUMBER FROM A); 

// 7075 records -- Using NOT EXISTS 
SELECT * from mt_users WHERE NOT EXISTS (SELECT 1 FROM A WHERE A.TERMINAL_NUMBER = mt_users.TERMINAL_NUMBER_1); 

// 7075 records -- Using LEFT JOIN 
SELECT * FROM mt_users m LEFT JOIN A a ON m.TERMINAL_NUMBER_1 = a.TERMINAL_NUMBER WHERE a.TERMINAL_NUMBER IS NULL; 
+0

Windows,linux? – ajreal

回答

1

首先把所有記錄從文件到newTable,並確保每個字段的開頭或結尾都沒有額外的空格。

+0

你能解釋爲什麼選擇「1」但「*」? – Emerald214

+1

沒有什麼特別的理由([存在1 vs存在*](http://stackoverflow.com/a/1597487/1027198))我只是習慣於使用它。它對我來說看起來「更好」。 –

1

步驟1.把從記錄的test.txt到一個不同的表中。

第2步:

SELECT a from tableA WHERE a NOT EXISTS (SELECT a FROM newTable) 
1

做什麼,中國aF寫的是我的第一個答案了。如果你不能/不想做,嘗試「NOT IN」,如:

SELECT a FROM A WHERE a NOT IN(...) 

必須生成的代碼的內容(),您創建查詢