假设我有一个包含180列和100条记录的表。将此表备份到临时表中,并删除原始表。在此迁移(更改)之后,将在生成相同表的管道上运行。我想将备份表与新表和行(记录)进行比较,任何差异都要移到第三个表(\结果表)中,因此我要:
INSERT OVERWRITE TABLE
zakj_customers.customers_detail_result
SELECT
acct_id, IF (a.title != b.title, 1, 0) title, IF (a.fname != b.fname, 1, 0) fname, IF (a.dob != b.dob, 1, 0) dob, IF (a.cr_date != b.cr_date, 1, 0) cr_date
FROM
zakj_customers.customers_detail a
LEFT OUTER JOIN
zakj_customers.customers_detail_backup b
ON
(a.acct_id = b.acct_id)
ORDER BY
title DESC,fname DESC,dob DESC,cr_date DESC
HAVING
title > 0 AND fname > 0 AND dob > 0 AND cr_date > 0
;
所以忘了这个查询是错误的,我对sql不太了解,而且我也有语法错误,所以我不能把它放在一起,在一张票据上,它是以这种格式提供的,这显然是错误的。
有人知道怎么做吗?
干杯
1条答案
按热度按时间8fsztsew1#
必须使用“case-when”而不是if:
我不会写having,而是把表达式写到where条件中:
“b.acct\u id为空”是获取新记录所必需的,因为<>会过滤掉它们。
(插入记录时完全不需要排序。)