2016-11-18 82 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 
相关问题