sql - 如果条件为真,SQL/HQL 写入表
问题描述
有没有办法做类似的事情
IF (numRows A > numRows B)
THEN write A into C
其中 A、B、C 是具有相同架构的表?
我正在使用 HiveQL。
解决方案
最好单独计算计数并根据计数有条件地运行插入覆盖脚本。如果您想在单个 SQL 查询中使用相同的逻辑,也可以这样做,但效率不高:
INSERT OVERWRITE TABLE C
SELECT a.col1, a.col2... --list columns here instead of a.*
FROM (select a.*,
count(*) over() as numRowsA, --counr rows in A
b.numRowsB
from A
cross join (select count(*) numRowsB from B) b --count rows in B
) a
WHERE a.numRowsA>a.numRowsB;
如果(a.numRowsA>a.numRowsB) <> TRUE
然后选择将不返回任何行并且表C
将不会被覆盖。
推荐阅读
- reactjs - 如何使用 Typescript 在 React 中使用 WebWorkers
- swift - JSON解析后访问结构数据,Swift
- python - Python PyQt5 无法正确加载某些页面
- reactjs - React + Electron:动态加载用户提供的字体?
- android - 显示来自 android 设备的两个图像
- python - 不明白为什么 matplotlib 条形宽度不恒定
- python - 如何在以列表为值的字典中搜索多个元素?
- react-native - 如何在 react-native-iap 中验证连接和产品 ID
- grid - MVC6 Grid 不显示任何内容
- java - 多个 Java 线程中的变量同步