我有两个文本文件,大约有10万行。每行有十位数字。两个文件中可能有相同的行,我想过滤它们。例如:
文件1:
1256745889
1515487882 <---same
4841453222
...
file2的:
7748523695
1515487882 <---same
8745529699
...
这是我的实际SQL查询
SELECT
table1.cjsz
FROM
table1
INNER JOIN table2 ON
table1.cjsz != table2.cjsz
WHERE
LENGTH(table1.26_code)=0;
它没有给出预期的结果。你能帮我个忙吗?
由于
答案 0 :(得分:0)
获取表1中的所有id而不是table2
select cjsz from table1
MINUS
select cjsz from table2
使表2中的所有ID不在table1中
select cjsz from table2
MINUS
select cjsz from table1
获取表1和表2中的所有ID
select cjsz from table1
INTERSECT
select cjsz from table2
答案 1 :(得分:0)
确切确定您要完成的任务,但是您尝试了类似的内容:
SELECT table1.cjsz WHERE LENGTH(table1.[26_code]) = 0
EXCEPT
SELECT table2.cjsz
答案 2 :(得分:0)
如果您使用的是SQLServer,则可以使用EXCEPT运算符,否则可以尝试以下命令:
SELECT
table1.cjsz
FROM
table1 LEFT OUTER JOIN table2 ON table1.cjsz = table2.cjsz
WHERE
table2.cjsz IS NULL AND LENGTH(table1.26_code) = 0
答案 3 :(得分:0)
如果我让你朝着正确的方向前进,你会看到Table1和Table2之间的symmetric difference。在网上搜索后,我发现了一个很好的blog entry给出了一个关于此的SQL样本,我准备了自己的样本,请试一试,告诉我它是否符合您的要求。
CREATE TABLE Table1 (id int, value char(1));
INSERT INTO Table1 values (1, 'H');
INSERT INTO Table1 values (2, 'e');
INSERT INTO Table1 values (3, 'l');
INSERT INTO Table1 values (4, 'l');
INSERT INTO Table1 values (5, 'o');
INSERT INTO Table1 values (6, ' ');
INSERT INTO Table1 values (7, ' ');
CREATE TABLE Table2 (id int, value char(1));
INSERT INTO Table2 values (6, ' ');
INSERT INTO Table2 values (7, ' ');
INSERT INTO Table2 values (8, ' ');
INSERT INTO Table2 values (9, 'w');
INSERT INTO Table2 values (10, 'o');
INSERT INTO Table2 values (11, 'r');
INSERT INTO Table2 values (12, 'l');
INSERT INTO Table2 values (13, 'd');
SELECT *
FROM (
SELECT a.id, a.value FROM Table1 a
UNION ALL
SELECT b.id, b.value FROM Table2 b
) AS t
GROUP BY t.id, t.value
HAVING COUNT(id) = 1
ORDER BY id;