谁能给解释下这条SQL语句

来源:百度知道 编辑:UC知道 时间:2024/06/16 11:29:03
"SELECT * FROM (SELECT a.original,iif(isnull(a.wgs),0,a.wgs) as zs,iif(isnull(b.tgs),0,b.tgs) as tgs from (SELECT count(Original) as wgs,Original FROM News WHERE typeid IN(26,29,30,31,32) and SpecialID=0 GROUP BY Original) a left join (SELECT count(Original) as tgs,Original FROM News WHERE checkked=1 AND typeid IN(26,29,30,31,32) and SpecialID=0 GROUP BY Original) b on a.original=b.original) where Original<>'gouli' ORDER BY tgs desc"
a.original
这个最不理解

a就是 (SELECT count(Original) as wgs,Original FROM News WHERE typeid IN(26,29,30,31,32) and SpecialID=0 GROUP BY Original) 这个查询得出来的结果集的别名,相当于查询出来的结果赋值给表a,差不多可以这样理解

SELECT *
FROM (SELECT a.original,iif(isnull(a.wgs),0,a.wgs) as zs,iif(isnull(b.tgs),0,b.tgs) as tgs from (SELECT count(Original) as wgs,Original
FROM News WHERE typeid IN(26,29,30,31,32) and SpecialID=0 GROUP BY Original) a --这个结果集当作a虚拟表
left join
(SELECT count(Original) as tgs,Original FROM News WHERE checkked=1 AND typeid IN(26,29,30,31,32) and SpecialID=0 GROUP BY Original) b --这个结果集当作b虚拟表
on a.original=b.original) where Original<>'gouli' ORDER BY tgs desc"

这个就是子查询加虚拟表的一个简单应用,复杂的