hql和sql的异同
hql和sql常见不同
select distinct 后必须指定字段名
join 条件仅支持等值关联且不支持or条件
子查询不能在select中使用;
hql中没有union,可使用distinct+ union all 实现 union;
hql以分号分隔,必须在每个语句结尾写上分号;
hql中字符串的比较比较严格,区分大小写及空格,因此在比较时建议upper(trim(a))=upper(trim(b))
日期判断,建议使用to_date(),如:to_date(orderdate)=‘2016-07-18’
关键字必须在字段名上加``符号,如select `exchange` from xxdb.xxtb;
数据库和表/视图之间仅有1个点,如xx_db.xx_tb。
hql不支持update,采用union all + left join (is null)变相实现update
取出增量数据
使用昨日分区的全量数据通过主键左连接增量数据,并且只取增量表中主键为空的数据(即,取未发生变化的全量数据);
合并1、2的数据覆盖至的分区,即实现了update。
hql不支持delete,采用not exists/left join(is null)的方法变相实现
取出已删除的主键数据(表b);
使用上一个分区的全量数据(表a)通过主键左连接a,并且只取a中主键为空的数据,然后直接insert overwrite至新的分区。
苏州优就业IT培训学校