怎样将SQL子查询转换为毗连
发布时间:2021-03-06 12:54:51 所属栏目:编程 来源:网络整理
导读:我有两个表与1:n相关:“content”和“versioned-content-data”(譬喻,文章实体和该文章建设的全部版本).我想建设一个表现每个“内容”的顶级版本的视图. 今朝我行使此查询(行使简朴的子查询): SELECT t1.id,t1.title,t1.contenttext,t1.fk_idothertable t1
我有两个表与1:n相关:“content”和“versioned-content-data”(譬喻,文章实体和该文章建设的全部版本).我想建设一个表现每个“内容”的顶级版本的视图. 今朝我行使此查询(行使简朴的子查询): SELECT t1.id,t1.title,t1.contenttext,t1.fk_idothertable t1.version FROM mytable as t1 WHERE (version = (SELECT MAX(version) AS topversion FROM mytable WHERE (fk_idothertable = t1.fk_idothertable))) 子查询现实上是对统一个表的查询,该表提取特定项的最高版本.请留意,版本化项目将具有沟通的fk_idothertable. 在SQL Server中,我实行建设此查询的索引视图,但好像我无法在索引视图中行使子查询.以是…这是我的题目…你能想到一种要领将这个查询转换成某种范例的JOIN查询吗? 好像索引视图不能包括: >子查询 我很绝望.接待任何其他设法:-) 很是感激! 办理要领假如表已经在出产中,这也许无济于事,但对此举办建模的正确要领是使version = 0成为永世版本并始终增进OLDER原料的版本.因此,当您插入新版本时,您会说:UPDATE thetable SET version = version + 1 WHERE id = :id INSERT INTO thetable (id,version,title,...) VALUES (:id,:title,...) 然后这个查询就是 SELECT id,... FROM thetable WHERE version = 0 没有子查询,没有MAX聚合.你老是知道当前版本是什么.您永久不必选择max(版本)以插入新记录. (编辑:湖南网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |