Sql 两个数据集中列的匹配排列

Sql 两个数据集中列的匹配排列,sql,database,algorithm,csv,permutation,Sql,Database,Algorithm,Csv,Permutation,我有两组数据(csv文件),其中包含关键数据库列的出现次数及其出现次数。(原始数据库表不再可用) 例如: 第1组 第1列第2列第3列计数 1 2 3 100 1 2 2 200 3 1 1 700 第2组 第1列第2列第3列计数 1 2 3 500 1 2 2

我有两组数据(csv文件),其中包含关键数据库列的出现次数及其出现次数。(原始数据库表不再可用)

例如:

第1组

第1列第2列第3列计数 1 2 3 100 1 2 2 200 3 1 1 700 第2组

第1列第2列第3列计数 1 2 3 500 1 2 2 133 1 1 1 100 我需要一些方法来比较这两个表,以告诉我,如果在第1组中有一个组合在第2组中不存在

我正在考虑编写一个脚本,在集合1中循环一个集合2的嵌套循环,但我想知道是否有更好的方法来实现这一点

愿意接受建议吗

谢谢

请不要循环:)

左连接在未找到记录的位置创建空值。左连接t1到t2,并且t2始终为空表示t1中的记录在t2中不匹配


将此项更改为right join,其中t1.col1为null,您将看到所有t2也不在t1中。

您没有指定DBMS,因此这是ANSI SQL:

要获得表2中不在表1中的组合:

select col1, col2, col3
from table_1
except
select col1, col2, col3
from table_2;
要获得表1中不在表2中的组合:

select col1, col2, col3
from table_2
except 
select col1, col2, col3
from table_1;
要在一个语句中同时使用这两种语句,请执行以下操作:

(
  select col1, col2, col3
  from table_1
  except
  select col1, col2, col3
  from table_2
)
union all
(
  select col1, col2, col3
  from table_2
  except
  select col1, col2, col3
  from table_1
);
SQLFiddle示例:

select col1, col2, col3
from table_1
except
select col1, col2, col3
from table_2;
select col1, col2, col3
from table_2
except 
select col1, col2, col3
from table_1;
(
  select col1, col2, col3
  from table_1
  except
  select col1, col2, col3
  from table_2
)
union all
(
  select col1, col2, col3
  from table_2
  except
  select col1, col2, col3
  from table_1
);