MYSQL怎么把B表的字段的值赋予到A表的值里

时间:2022-10-28 08:55:03
B表
b字段
5
6
15
13

A表
ID gid(物品id) B表b字段
1 7                         5
2 8                          6
3 9                        15
4 10                     13

A表只有id,gid两字段,查询时怎么把B表的b字段也插入进去

9 个解决方案

#1


两个表的关联字段是什么?两个表的数据怎么对应?知道B的5对应Aid=1还是2?

#2


引用 1 楼 sinat_28984567 的回复:
两个表的关联字段是什么?两个表的数据怎么对应?知道B的5对应Aid=1还是2?


b表的字段是a表统计合并的出的一个数据

#3


得到的数据为什么不是
ID gid(物品id) B表b字段
1 7                       13  
2 8                       15   
3 9                       6 
4 10                     5

#4


引用 3 楼 sinat_28984567 的回复:
得到的数据为什么不是
ID gid(物品id) B表b字段
1 7                       13  
2 8                       15   
3 9                       6 
4 10                     5

按下标对应的插入    或者 gid 是相同的字段  两种可能  有办法实现没

#5


引用 4 楼 Li494550151 的回复:
Quote: 引用 3 楼 sinat_28984567 的回复:

得到的数据为什么不是
ID gid(物品id) B表b字段
1 7                       13  
2 8                       15   
3 9                       6 
4 10                     5

按下标对应的插入    或者 gid 是相同的字段  两种可能  有办法实现没

有办法实现

#6


引用 5 楼 sinat_28984567 的回复:
Quote: 引用 4 楼 Li494550151 的回复:

Quote: 引用 3 楼 sinat_28984567 的回复:

得到的数据为什么不是
ID gid(物品id) B表b字段
1 7                       13  
2 8                       15   
3 9                       6 
4 10                     5

按下标对应的插入    或者 gid 是相同的字段  两种可能  有办法实现没

有办法实现


语句怎么写  

#7



select * from a join b on a.gid = b.gid 

#8


引用 7 楼 sinat_28984567 的回复:

select * from a join b on a.gid = b.gid 


是这样的  
select front_num from sr_jxc_inventory_log  
where   add_time>='2017-11-01 00:00:00'  
查询出的数据是
5
6
15
13

我想把这个数据作为 期初数据(cqjc) 插入到下面的语句中
select L.goods_id,L.warehouse_id, G.model, G.factory,G.barcode, W.name,
sum(L.actual_number) jc,
sum(case when L.actual_number> 0 then L.actual_number else 0 end) as sr,
sum(case when L.actual_number <0 then L.actual_number else 0 end ) as zc,
(select front_num from `sr_jxc_inventory_log` 
where warehouse_id='1'  and
add_time>'2017-11-02 00:00:00' 
order by add_time   
limit 1)as cqjc,
(SUM(L.actual_number)+(select front_num from `sr_jxc_inventory_log` 
where warehouse_id='1'  and
add_time>'2017-11-02 00:00:00' 
order by add_time   
limit 1)
) as qmjc
FROM sr_jxc_inventory_log as L
   LEFT JOIN sr_goods as G ON G.goods_id = L.goods_id 
   LEFT JOIN sr_jxc_ware as W ON W.wareid = L.warehouse_id
where L.warehouse_id='1' and L.add_time>'2017-11-02 00:00:00' 
 group by L.goods_id;

这里面的cqjc 查询后都显示为5

#9



select L.goods_id,L.warehouse_id, G.model, G.factory,G.barcode, W.name,
sum(L.actual_number) jc,
sum(case when L.actual_number> 0 then L.actual_number else 0 end) as sr,
sum(case when L.actual_number <0 then L.actual_number else 0 end ) as zc,
B.front_num as cqjc,
(SUM(L.actual_number)+(select front_num from `sr_jxc_inventory_log` 
where warehouse_id='1'  and
add_time>'2017-11-02 00:00:00' 
order by add_time   
limit 1)
) as qmjc
FROM sr_jxc_inventory_log as L
   LEFT JOIN sr_goods as G ON G.goods_id = L.goods_id 
   LEFT JOIN sr_jxc_ware as W ON W.wareid = L.warehouse_id
   LEFT JOIN
   (select front_num,goods_id 
    from `sr_jxc_inventory_log` as A
    where warehouse_id='1'  
    and add_time>'2017-11-02 00:00:00' 
    and not exists (select 1 from `sr_jxc_inventory_log` 
                    where goods_id=A.goods_id and add_time<A.add_time and add_time>'2017-11-02 00:00:00' )) as B ON L.goods_id=B.goods_id
where L.warehouse_id='1' and L.add_time>'2017-11-02 00:00:00' 
 group by L.goods_id;

#1


两个表的关联字段是什么?两个表的数据怎么对应?知道B的5对应Aid=1还是2?

#2


引用 1 楼 sinat_28984567 的回复:
两个表的关联字段是什么?两个表的数据怎么对应?知道B的5对应Aid=1还是2?


b表的字段是a表统计合并的出的一个数据

#3


得到的数据为什么不是
ID gid(物品id) B表b字段
1 7                       13  
2 8                       15   
3 9                       6 
4 10                     5

#4


引用 3 楼 sinat_28984567 的回复:
得到的数据为什么不是
ID gid(物品id) B表b字段
1 7                       13  
2 8                       15   
3 9                       6 
4 10                     5

按下标对应的插入    或者 gid 是相同的字段  两种可能  有办法实现没

#5


引用 4 楼 Li494550151 的回复:
Quote: 引用 3 楼 sinat_28984567 的回复:

得到的数据为什么不是
ID gid(物品id) B表b字段
1 7                       13  
2 8                       15   
3 9                       6 
4 10                     5

按下标对应的插入    或者 gid 是相同的字段  两种可能  有办法实现没

有办法实现

#6


引用 5 楼 sinat_28984567 的回复:
Quote: 引用 4 楼 Li494550151 的回复:

Quote: 引用 3 楼 sinat_28984567 的回复:

得到的数据为什么不是
ID gid(物品id) B表b字段
1 7                       13  
2 8                       15   
3 9                       6 
4 10                     5

按下标对应的插入    或者 gid 是相同的字段  两种可能  有办法实现没

有办法实现


语句怎么写  

#7



select * from a join b on a.gid = b.gid 

#8


引用 7 楼 sinat_28984567 的回复:

select * from a join b on a.gid = b.gid 


是这样的  
select front_num from sr_jxc_inventory_log  
where   add_time>='2017-11-01 00:00:00'  
查询出的数据是
5
6
15
13

我想把这个数据作为 期初数据(cqjc) 插入到下面的语句中
select L.goods_id,L.warehouse_id, G.model, G.factory,G.barcode, W.name,
sum(L.actual_number) jc,
sum(case when L.actual_number> 0 then L.actual_number else 0 end) as sr,
sum(case when L.actual_number <0 then L.actual_number else 0 end ) as zc,
(select front_num from `sr_jxc_inventory_log` 
where warehouse_id='1'  and
add_time>'2017-11-02 00:00:00' 
order by add_time   
limit 1)as cqjc,
(SUM(L.actual_number)+(select front_num from `sr_jxc_inventory_log` 
where warehouse_id='1'  and
add_time>'2017-11-02 00:00:00' 
order by add_time   
limit 1)
) as qmjc
FROM sr_jxc_inventory_log as L
   LEFT JOIN sr_goods as G ON G.goods_id = L.goods_id 
   LEFT JOIN sr_jxc_ware as W ON W.wareid = L.warehouse_id
where L.warehouse_id='1' and L.add_time>'2017-11-02 00:00:00' 
 group by L.goods_id;

这里面的cqjc 查询后都显示为5

#9



select L.goods_id,L.warehouse_id, G.model, G.factory,G.barcode, W.name,
sum(L.actual_number) jc,
sum(case when L.actual_number> 0 then L.actual_number else 0 end) as sr,
sum(case when L.actual_number <0 then L.actual_number else 0 end ) as zc,
B.front_num as cqjc,
(SUM(L.actual_number)+(select front_num from `sr_jxc_inventory_log` 
where warehouse_id='1'  and
add_time>'2017-11-02 00:00:00' 
order by add_time   
limit 1)
) as qmjc
FROM sr_jxc_inventory_log as L
   LEFT JOIN sr_goods as G ON G.goods_id = L.goods_id 
   LEFT JOIN sr_jxc_ware as W ON W.wareid = L.warehouse_id
   LEFT JOIN
   (select front_num,goods_id 
    from `sr_jxc_inventory_log` as A
    where warehouse_id='1'  
    and add_time>'2017-11-02 00:00:00' 
    and not exists (select 1 from `sr_jxc_inventory_log` 
                    where goods_id=A.goods_id and add_time<A.add_time and add_time>'2017-11-02 00:00:00' )) as B ON L.goods_id=B.goods_id
where L.warehouse_id='1' and L.add_time>'2017-11-02 00:00:00' 
 group by L.goods_id;