2016-11-18 179 views
0

如何在不使用SQL中的任何子查詢的情況下重寫此查詢? 我不太熟悉如何做到這一點,但我認爲這是通過使用「加入」完成的。如何在沒有任何子查詢的情況下重寫SQL查詢?

SELECT title 
FROM Movies Old 
Where year < ANY 
    (SELECT year 
    FROM Movies 
    WHERE title = Old. title 
); 

(注:這是來自關係電影(名稱,年份長,流派,studioName,producerC#))

+0

@philipxy此查詢查找出現多次的電影標題。這就是我想要的。我想重寫它沒有子查詢。 –

+0

這將返回一個標題行,它是電影中出現時的隱藏函數。除非你沒有說過你認爲如果一部電影在電影中出現不止一次,那麼它與不同的年份有所不同;那麼它會返回每1行減去給定標題出現的年數。但是「找到不止一次出現的電影名稱」是一個不清楚的描述。此外,它通常意味着DISTINCT標題。好吧,我們可以給出一個等效的無查詢的子查詢。但是,要求幫助你是合理的,結果真的是你想要的嗎? – philipxy

回答

2

要逐字重寫使用聯接你可以試試這個當前的查詢:

SELECT m1.title 
FROM Movies m1 
INNER JOIN Movies m2 
    ON m1.title = m2.title AND 
     m1.year < m2.year 

但如果你真正想要的是找到其中出現多次電影標題,那麼當不直接使用GROUP BY查詢:

SELECT title 
FROM Movies 
GROUP BY title 
HAVING COUNT(*) > 1 
相關問題