• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

集合的操作_MySQL

mysql 搞代码 4年前 (2022-01-09) 16次浏览 已收录 0个评论

<meta content=”text/html; charset=gb2312″ http-equiv=”content-type” />/tmp/a.sh.html<meta content=”Vim/7.3″ name=”Generator” /><meta content=”vim7.3_v6″ name=”plugin-version” /><meta content=”sh” name=”syntax” /><meta content=”use_css,no_pre,number_lines” name=”settings” /> 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 本文来源gao@daima#com搞(%代@#码@网& insert into status select id,1 from ids on duplicate key update $f=1;
48 ” | mysql
49 done
50
51 脚本执行完成之后,后面的工作就简单了,此处略去N个字。。。
52
53 这样可以避免不同的表之间多次join带来的开销,特别是在数据量较大的时候可以极大的提高性能。
欢迎上网易彩票买彩票啊~


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:集合的操作_MySQL
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址