sql 分析

SELECT
 case  when  a.value is null || a.`value` = ''  ||  LOCATE('nocheck', a.VALUE) > 0
then  ''
ELSE 
a.value 
end  as  bgy_contract_project ,
 case  when  c.value is null || c.`value` = '' || LOCATE('nocheck', c.VALUE) > 0
then  ''
ELSE 
c.value 
end  as contract_name
FROM
  ar_approve_entry_result a
LEFT  JOIN ar_approve_entry_result c ON a.approve_result_uuid = c.approve_result_uuid
AND c.entry_UUID = 'AREN1295'
INNER JOIN (
  SELECT
    b.uuid,
    b.pay_comfirm_uuid
  FROM
    ar_approve_result b
  WHERE
    b.sys_status = 1
  AND b.pay_comfirm_uuid = '432d9912f3f14d58a88251d9cd739a6f'
  ORDER BY
    b.db_create_sys_time DESC
  LIMIT 0,1
) b ON a.approve_result_uuid = b.uuid
WHERE
  a.sys_status = 1
AND a.entry_UUID = 'AREN17324' ;




这个sql分析:
第一点: A LEFT  JOIN  B  (A 表数据一定存在 ,然后  B 表的数据 不一定存在,
所以在 on  后面 紧跟  B表的关联 and c.entry_UUID = 'AREN1295' 这个 关联条件,
AREN1295是 履约文件节点的合同名称/工程名称/项目名称,因为这样,即使 B表数据没有,也没有关系, 
而 在WHERE  后面加这个AND a.entry_UUID = 'AREN17324' 采购订单的工程名称/项目名称 ,是因为这个是一定存在的)
第二点:case  when 的使用
第三点:LOCATE('nocheck', a.VALUE) > 0 使用,这个 的使用 意思是,当 a.VALUE 的值为 nocheck 的时候,
LOCATE()这个方法的返回值,就是 大于0 ,接着 就用它作为了 判断条件


    

posted on 2019-12-27 14:01  小白菜好吃  阅读(207)  评论(0编辑  收藏  举报

导航