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的数据。
有人可以帮助我
答案 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 |