awk处理案例二十二--求差集
【场景】
表A 表B region name name 重庆 a a ............ ........ 广州 b z ............. 上海 d ............. 北京 a ............ B表为a到z齐全的26个字母;A表的a.name按照region来分组的话,是不齐全的但唯一的。(比如说region=重庆的时候,对应的a.name可能是从a到y一共25行;region=广州的时候,
对应的a.name可能是从b到x23行)我想通过一个sql语句,得到这样2列,第一列为region,第二列为按照region分组后存在于B.name但是不存在于A.name中
这本来是一个帖子ITPUT
我当时也提供了一条SQL;性能不是很好。已经有完美的答案了;
select distinct * from (select A.region,B.name from A,B) minus select * from A where region
随后我补充了awk解决方法
【代码】
awk 'NR==FNR{a[$1,$2]=1;b[$1];next}{for(i in b){if(! a[i,$0])print i,$0}}' A B

浙公网安备 33010602011771号