2009-12-21 85 views
1

SELECT SUM(觀看次數)其中id從syndicatedvideos( 選擇VideoID的其中VideoID的在(選擇syndicatedvideos syndicatedvideoid其中視頻ID = 31) 工會 選擇從syndicatedvideos syndicatedvideoid其中VideoID的在(選擇syndicatedvideos syndicatedvideoid其中視頻ID = 31 ))或(31)中的id。如何優化此查詢?從視頻

如何優化上面的查詢?

回答

0

我認爲這應該工作。

select sum(viewcount) from video 
where id in(select syndicatedvideoid from syndicatedvideos where videoid=31) or or id in (31) 

請檢查確認。謝謝。

+0

你已經剪出了一大堆videoids。 – Li0liQ 2009-12-21 07:55:27

0
SELECT sum(video.viewcount) FROM video 
    LEFT JOIN syndicatedvideos sv1 ON video.id=sv1.videoid 
    LEFT JOIN syndicatedvideos sv2 ON video.id=sv1.syndicatedvideoid 
WHERE 
    sv1.videoid=31 OR 
    sv2.videoid=31 OR 
    video.id=31; 
0
select sum(viewcount) 
from video 
where id in(

    select id from(
     select videoid as id 
     from syndicatedvideos 

     union 

     select syndicatedvideoid as id 
     from syndicatedvideos) 

    where id in(
     select syndicatedvideoid 
     from syndicatedvideos 
     where videoid=31) 

) or id in (31) 
0
select sum(viewcount) 
from video v 
where exists (
    select 1 
    from syndicatedvideos sv 
    where (
     v.id = sv.videoid 
     or v.id = sv.syndicatevideoid) 
    and exists (
     select 1 
     from syndicatedvideos sv2 
     where sv.videoid = sv2.syndicatevideoid 
     and sv2.videoid=31) 
) 
or id = 31. 

我改變了:

  • 最後替換()與=
  • 取代你的主要在()子查詢與存在其上 VideoID的和同時匹配從而避免與第二個子分句
  • 結合,很好地格式化以幫助在下面tanding :-)