kk Blog —— 通用基础


date [-d @int|str] [+%s|"+%F %T"]
netstat -ltunp
sar -n DEV 1

mysql union all 比较两个表不同的数据

https://blog.csdn.net/JustDI0209/article/details/122492293

https://blog.csdn.net/u010931123/article/details/82425580

1
select * from (select * from rs.zzdmk union all select * from rs2.zzdmk) t group by pbf, sxh HAVING count(*)=1;

count( * ) = 1 为两张表数据不同的地方(只有一条结果),count( * ) = 2 为两张表数据相同的地方。

union和union all的区别

union会自动压缩多个结果集合中的重复结果,而union all则将所有的结果全部显示出来,不管是不是重复。

Union

对两个结果集进行并集操作,不包括重复行,同时进行默认规则的排序;

UNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。

实际大部分应用中是不会产生重复的记录,最常见的是过程表与历史表UNION

Union All

对两个结果集进行并集操作,包括重复行,不进行排序;

如果返回的两个结果集中有重复的数据,那么返回的结果集就会包含重复的数据了。

mysql查询时排除某个字段

http://www.yayihouse.com/yayishuwu/chapter/2676

如果使用* 就把所有字段查出来了了,如果把要查询的字段一个个写出来又太多。

解决思路就是先使用以下sql生成你的查询sql语句,然后在代码中执行生成的sql就行了,

其中 rs 数据库名,zzja,zzjb 表名,id 就是要排除的字段名。

1
2
3
SELECT CONCAT('select ', GROUP_CONCAT(COLUMN_NAME), ' from rs.', TABLE_NAME, ' where zgh in ("222");') as str FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='rs' AND table_name in ('zzjb','zzja') and COLUMN_NAME!='id' group by table_name;

SELECT CONCAT('insert into ', TABLE_NAME, '(', GROUP_CONCAT(COLUMN_NAME), ') select ', GROUP_CONCAT(COLUMN_NAME), ' from rs.', TABLE_NAME, ' where zgh in ("222");') as str FROM information_schema.COLUMNS WHERE TABLE_SCHEMA='rs' AND table_name in ('zzjb','zzja') and COLUMN_NAME!='id' group by table_name;