从表中选择全部,但文件中的记录除外

时间:2011-12-05 12:59:24

标签: mysql sql linux

我有一个表A,其中一列名为a,文件“test.txt”包含:

111111AAAA
222222BBBB
3333DDDDDD
.....

test.txt中的记录与“a”列具有相同的类型。 除了“test.txt”中的记录外,如何从A中选择全部?

更新 我尝试了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;

3 个答案:

答案 0 :(得分:1)

第1步。将test.txt中的记录放入不同的表格中。

第2步。

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

答案 1 :(得分:1)

做pF写的东西也是我的第一个答案。如果你不想/不想这样做,请尝试“NOT IN”:

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

您必须在创建查询的代码中生成()的内容

答案 2 :(得分:1)

首先将文件中的所有记录放入newTable,并确保每个字段的开头或结尾没有其他空格。

select a from tableA t where not exists(select 1 from newTable n where n.a = t.a)