当前位置:Gxlcms > mysql > 集合的操作_MySQL

集合的操作_MySQL

时间:2021-07-01 10:21:17 帮助过:14人阅读

/tmp/a.sh.html 1 集合的操作
2
3 工作中经常会碰到数据集合的操作,诸如集合的交集、差集和并集等等。在集合只有少量的时候,如2个集合时,用shell工具我感觉比数据库更方便一些。
4 比如:
5 集合a:
6 1
7 2
8 3
9 4
10 5
11 集合b:
12 1
13 2
14 5
15 7
16 交集的操作:a∩b,cat a b | sort | uniq -u
17 差集的操作:a-b,cat a b b | sort | uniq -u
18 并集的操作:a∪b,cat a b | sort | uniq。
19 用数据库操作也可以,可以用到left join等等。
20
21 但是在多个集合需要执行这样的操作时,用shell就显得不够方便了。
22 比如集合a,b,c,d,e等5个集合,需要填写下面这样的一张表:
23 +------+------+------+------+-------+------+
24 | 交集 | a | b | c | d | e |
25 +------+------+------+------+-------+------+
26 | a | | | | | |
27 +------+------+------+------+-------+------+
28 | b | | | | | |
29 +------+------+------+------+-------+------+
30 | c | | | | | |
31 +------+------+------+------+-------+------+
32 | d | | | | | |
33 +------+------+------+------+-------+------+
34 | e | | | | | |
35 +------+------+------+------+-------+------+
36
37 可以在数据库中创建两张张表
38 status(id int primary key, a boolean default 0, b boolean default 0, c boolean default 0, d boolean default 0, e boolean default 0);
39 ids(id int);
40
41 执行以下脚本:
42 for f in a b c d e
43 do
44 echo "
45 truncate table ids;
46 load data infile '$f' into table ids;
47 insert into status select id,1 from ids on duplicate key update $f=1;
48 " | mysql
49 done
50
51 脚本执行完成之后,后面的工作就简单了,此处略去N个字。。。
52
53 这样可以避免不同的表之间多次join带来的开销,特别是在数据量较大的时候可以极大的提高性能。
欢迎上网易彩票买彩票啊~

人气教程排行