大佬教程收集整理的这篇文章主要介绍了来自 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_675_4@
解决方案的第 1 部分:在 groupby rID 和 mID 和 count==2 之后:@H_675_4@
我制作了一个 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@
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,请注明来意。