总结一下平时遇到的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 + 鼠标左键
编辑每行的末尾或者开头
使用正则表达式进行替换 开头 ^ ,末尾 $