程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了来自 where 语句中的子查询重用大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决来自 where 语句中的子查询重用?

开发过程中遇到来自 where 语句中的子查询重用的问题如何解决?下面主要结合日常开发的经验,给出你关于来自 where 语句中的子查询重用的解决方法建议,希望对你解决来自 where 语句中的子查询重用有所启发或帮助;

我的问题@H_675_4@:

我想在 where 子句的 from 子查询中重用该表。我该怎么做?

SELEct rID,name,title
from (SELEct statement ...) as t1 
where exists(SELEct * FROM t1 as t2
            where t1.raTingDate>t2.raTingDate and t1.stars>t2.stars);

这给出了一个错误:错误代码:1146。表'sql_stanford_movIE.t1'不存在


目标:@H_675_4@ 返回 rID 使得

    @H_148_20@mID 和 rID 合计计数(stars)=2
  • 对于给定的 mID 和 rID,最新评级日期必须具有更高的星级

主表:@H_675_4@

来自 where 语句中的子查询重用

解决方案的第 1 部分:在 groupby rID 和 mID 和 count==2 之后:@H_675_4@

来自 where 语句中的子查询重用

我制作了一个 temp 表,内容如下:

SELEct *
from raTing R1 join 
    (SELEct rID,mID,count(mID)
    from raTing
    group by rID,mID
    having count(mID)=2) as G using(rID,mID);

解决方案的第 2 部分:检查最新评分日期是否具有更高的星级@H_675_4@

来自 where 语句中的子查询重用

SELEct rID,title
from temp as t1 
where exists(SELEct * FROM temp t2
            where t1.raTingDate>t2.raTingDate and t1.stars>t2.stars);

但我需要在一个语句中写出整件事。@H_675_4@

解决方法

您可以使用 CTE 做到这一点:

with t1 as (
      . . . 
     )
SELEct rID,name,title
from t1 
where exists (SELEct 1
              from t1 t2
              where t1.raTingDate > t2.raTingDate and 
                    t1.stars > t2.stars
             );

一个 CTE 就像一个子查询,只是你可以多次引用它。

也就是说,我猜您可以为此使用窗口函数。但是你想要的逻辑并不完全清楚。

大佬总结

以上是大佬教程为你收集整理的来自 where 语句中的子查询重用全部内容,希望文章能够帮你解决来自 where 语句中的子查询重用所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:where来自