有时候有些需求 要直接操作数据库,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

posted on 2019-03-25 18:33  Mr.xiab  阅读(386)  评论(0编辑  收藏  举报