之前遇到乙個業務場景,大概描述一下!
乙個加分規則配置表tik_bonus_points,裡面配置了一些特殊人員的加分規則,以及一些部門的特殊加分規則。
我的任務是按照該配置表的配置,將加分規則計算出來的分值更新到系統的tik_user庫中。由於該配置表中的使用者唯一標識是來自釘釘的id,並非是我們系統的user_id。所以需要從許可權的tc_allusers表中查出使用者的我們系統的id,在進行更新。
按照以往的習慣,這有些複雜的業務肯定是放在了service層中寫了,但是這次想提高一下sql能力。
資料來自多張表,肯定要用到連線查詢,所以就有了一下的sql
update tik_user c
inner
join
(select
e.weight,
e.integral,
e.reduction_auth,
d.id
from
tik_user d
right
join
(select
a.`name`
, a.integral,
a.weight,
a.reduction_auth,
b.id as user_id
from
tik_bonus_points a
left
join tc_allusers b on a.id = b.ding_id
where
a.type=1
and a.is_delete =
0and b.is_delete =
0) e on d.id = e.user_id
) f on c.id = f.id
set c.giving_weight = f.weight,
c.giving_integral=f.integral,
c.is_permit_minus=f.reduction_auth
where c.is_delete=
0
mysql根據查詢條件更新資料表
menu templateitem表資料更新 插入郵箱伺服器的修改列929 insert ignore into menu templateitem menu template,menu id select menu template,929 from menu templateitem where...
mysql 左 右 內連線及三表聯查
a站在b的左邊 b站在a的右邊 a left join b b right join a 如何記憶 1左右連線可以相互轉化 2把右連線轉換成左連線來使用 推薦左連線,相容性好一些 左連線 以左表為準,去右表找匹配資料,找不到匹配,用null補齊 表1.表2.代表取出兩張表的所有列 select 表1...
MySQL兩表聯查,根據不同條件獲得不同資料
查詢語句 select distinct ifnull select sum 列名 from a,b where a.id b.id and a.condition condition1 and b.condition condition2 0 as 條件1下的資料 ifnull select su...