hive sql使用记录
关于join
推荐写法
SELECT a.* ,b.* FROM ( SELECT * FROM a WHERE {subquery_where_condition} ) a {LEFT/RIGHT/FULL/LEFT SEMI/LEFT ANTI} JOIN ( SELECT * FROM b WHERE {subquery_where_condition} ) b ON {on_condition} WHERE {where_condition} ;
做表连接时,尽量将每个表的单表过滤条件单独写成子查询;而不要再join结束后再用where或者on去做单表过滤
要尽量的让参与join的两个表的数据量变小
https://cloud.tencent.com/developer/article/2242914
时间戳
https://blog.csdn.net/a805814077/article/details/115014708
使用JSON_TABLE展开数组
json_field_name字段对应的结构为
{ "total": 12, "details": [ { "photoId": "12", "photoName": "12name", "photoStatus": 2 }, { "photoId": "13", "photoName": "13name", "photoStatus": 1 } ] }
展开的sql如下面
SELECT t.id, -- 原表所有列(可选) photos.* -- 展开的图片字段 FROM table_name t left join JSON_TABLE( t.json_field_name, -- JSON 字段名称 '$.details[*]' -- 提取 details 数组,json中一个字段叫details,它的值是个数组 COLUMNS( photoId VARCHAR(20) PATH '$.photoId', -- 图片ID photoName VARCHAR(20) PATH '$.photoName', photoStatus INT PATH '$.photoStatus' ) ) AS photos on true where t.id=218890105; -- 必需的表别名

浙公网安备 33010602011771号