weixin_44011929 2021-11-29 17:21 采纳率: 33.3%
浏览 41
已结题

一个sql优化。求更简单的方法

前提条件,使用的Mysql数据库,

表名称:table01 表

表结构如下:
id ,resid, name ,dataid,public—status, status
id,合同id, 名字, 审批id , 数据端:0/平台:1,审批状态(1同意/0拒绝)

表数据示例:
1,10010,张三,10086, 0, 1 //数据方
2,10010,张三,1008611,0,1 //数据方
3, 10010,张三, ' ', 1,1 //平台方

求,只有数据端审批都同意的合同,才能查到平台的数据

我这里写了一个sql,

 SELECT
    * 
FROM
    table01 a
    INNER JOIN (
SELECT
        t1.resid,
        t1.num1 
    FROM
        ( SELECT resid, COUNT( 1 ) AS num1 FROM table01 WHERE public— STATUS = 0 AND STATUS = 1 GROUP BY resid ) t1
        INNER JOIN ( SELECT resid, COUNT( 1 ) AS num2 FROM table01 WHERE public— STATUS = 0 GROUP BY resid ) t2 ON t1.resid = t2.resid 
        AND t1.num1 = t2.num2 
    ) b 
    ON a.resid = b.resid
想求一下同志们,有没有更简单的方法
  • 写回答

3条回答 默认 最新

  • 神仙别闹 2021-11-29 17:36
    关注
    
    select *,(select count(*) as cnum from table01 as nt01  where nt01.id=t01.id and [public-status]=0 and status=0) as cnum from table01 as t01   where t01.id=10010 and t01.[public-status]=1 and  t01.cnum=0
    

    没在环境里写,大体思路是这样,只需要一个子查询,确认当前数据方未审核通过的数量,当数量等于0时,查询平台方的数据。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 1月13日
  • 已采纳回答 1月5日
  • 创建了问题 11月29日

悬赏问题

  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 下图接收小电路,谁知道原理
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度