使用条件将数据插入配置单元时出错

时间:2019-08-28 13:37:15

标签: mysql hive hiveql

hi,我需要将值插入到一个新表(由3个列组成)中,其中有一个名为verad_id的列,该列具有250个值,现在在插入数据时,我需要加载6个verad_id所期望的所有值为零的值用于补料字段。

主表示例:-

verad_id   reage  value
 998        0      38
 8484       4      43
 998        3      33
 432        0      23
 233        43     26
 556        0      53
 432        9      33

现在我需要插入verad_id 998和432的期望值,其reage值为0

插入表格后应该是这样

verad_id   reage  value
 8484       4      43
 998        3      33
 233        43     26
 556        0      53
 432        9      33

我已经尝试过了,但是没有用

尝试案例1:-

insert into finaltable
select
verad_id,
reage,
value
from main_table where  verad_id = '998' or verad_id = '432' and reage != 0;

尝试过此操作,但此查询不起作用

尝试案例2:-

insert into finaltable
select
verad_id,
reage,
value
from main_table where  verad_id in ( '998' , '432') and reage != 0;

在这种情况下,我能够加载read不等于0的verad_id'998'和'432'数据,这里我丢失了其他verad_id的数据。

有人可以帮助我

1 个答案:

答案 0 :(得分:0)

简单地说,您想要做的就是从表main_table中获取分组数据,并按reage顺序按列DESC排序每个组。

获得这些结果后,您希望将其插入名为finaltalbe的表中

在这种情况下,您可以使用子选择来定义结果显示的顺序,然后选择一个围绕该结果的组,MySQL将在每个分组集中显示第一行的值。

INSERT INTO finaltable
  SELECT * FROM (SELECT * FROM main_table ORDER BY `reage` DESC) AS `sorted` GROUP BY `verad_id`;

这将在表finaltable中显示以下数据

| verad_id | reage | value |
|----------|-------|-------|
|      233 |    43 |    26 |
|      432 |     9 |    33 |
|      556 |     0 |    53 |
|      998 |     3 |    33 |
|     8484 |     4 |    43 |