总结一下平时遇到的SQL问题,以及对应的解决办法。
排除某几列查询
查询除了ds 和 hr 之外的所有列
1 | SELECT `(ds|hr)?+.+` FROM sales |
修改表生命周期(ODPS)
1 | ALTER TABLE table_name SET lifecycle days; |
正则匹配
匹配除“*n*”之外的任何单个字符。要匹配包括“*n*”在内的任何字符,请使用像“(.|\n)”的模式。
解析执行过程
explain
效率优化
数据倾斜
count(distinct ) 效率低下,数据倾斜,改用 group by 优化
遇到的坑
查询空值
例 字段 A 有三种取值 Y, N, null(空值)
我想取N 与 null ,如果查询条件为 <> ‘Y’ ,是查不出null的
应该这么写 A <> ‘Y’ or A is null
其他
快速编辑
vscode中
选择多行
option + shift + 鼠标左键
编辑每行的末尾或者开头
使用正则表达式进行替换 开头 ^ ,末尾 $