当前位置: 代码迷 >> Sql Server >> 改写成left join联合查询解决办法
  详细解决方案

改写成left join联合查询解决办法

热度:5   发布时间:2016-04-24 10:10:54.0
改写成left join联合查询
select * from M_News where countryID in ( select id from U_LanguageCategory where ParentID=2 and (id in ((select UHometown from U_Caricature where UID=8), (select HometownID from areas where id in ((select GoCityID from U_Caricature where UID=8),(select UCity from U_Caricature where UID=8)) ))))

坐等大手
------解决方案--------------------
不清楚具体表格的关系,直接改写了一下,试试能不能行。
;with Data_U_Caricature as
(
SELECT 
GoCityID
, UCity
, UHometown
FROM   U_Caricature
WHERE  UID = 8
)
,  Data_Areas as
(
select HometownID
from areas
inner join Data_U_Caricature a on a.GoCityID = areas.id
union
select HometownID
from areas
inner join Data_U_Caricature b on a.UCity = areas.id
)
, Data_U_LanguageCategory AS
(
select id
from U_LanguageCategory
inner join Data_U_Caricature a on a.UHometown = U_LanguageCategory.id
where ParentID = 2
union 
select id
from U_LanguageCategory
inner join Data_Areas a on a.HometownID = U_LanguageCategory.id
where ParentID = 2
)
select *
from M_News
inner join Data_U_LanguageCategory on M_News.id = Data_U_LanguageCategory.id
  相关解决方案