有时候有些需求 要直接操作数据库,sql感觉很有意思 所以记录一下这些奇葩需求的sql 所以自己总结下
1 将一张表查出来的多个字段修改到另一张表的字段中
今天操作数据库 有个需求需要从一张流水表中有用户付款金额 还有一张 是用户的结算金额 每个用户的付款和结算费率和手续费等都不一样 需要将剩余可以结算的金额查询出来 进行更新到各自对应的用户后面 花了几分钟写出来去测试了一下 没问题
万变不离其中 依然还是 在 update +表(及其关联表) +set +更改字段 +where 条件
update merchant m join ( 
select pc.cp_channel  channelId,0.01*sum(pc.real_pay) as totalmoney, scs.flow ,(0.01*sum(pc.real_pay))-flow as settlementmoney
from pay_record pc
right join 
(select channalId,sum((money+charge)/(1-rate)) as flow from settlement where  status > -1 GROUP BY channalId) 
scs on scs.channalId=pc.cp_channel GROUP BY pc.cp_channel
)a on a.channelId=m.channel_id 
set m.money= a.settlementmoney where a.channelId=m.channel_id
2 在游戏表games中查出的list集合下给每一列数据新增一列编号的字段(游戏表中查出热门和上线状态的随机8条数据,且给每条数据增加编号)
select (@i:=@i+1) as num,games.* from games ,(select @i:=0) as it where status=1 and is_hot=1 ORDER BY num LIMIT 8
3 周围朋友基本都问过,怎么通过一条sql去查出其所有的父id,merchant表中查出其所有的id=26的父id 和名字
SELECT T2.id, T2.name 
FROM ( 
    SELECT 
        @r AS _id, 
        (SELECT @r := parent_id FROM merchant WHERE id = _id) AS parent_id 
    FROM 
        (SELECT @r := 26) vars, 
        merchant h 
    WHERE @r <> 0) T1 
JOIN merchant T2 
ON T1._id = T2.id
 
                     
                    
                 
                    
                 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号