2016-09-23 59 views
-1

我需要找到所有标题的电影有更大的替代成本比一些R评级电影。SQL子查询找到数据

薄膜表有...

film_id, title, description, release_year, language_id, original_language_id, rental_duration, rental_rate, length, replacement_cost, rating, special_features, last_update 

这是不工作...

SELECT 
    title 
FROM film 
WHERE replacement_cost > (SELECT 
    replacement_cost 
FROM film 
WHERE rating = 'R'); 

回答

0
SELECT title 
FROM film 
WHERE replacement_cost > 
    (SELECT MAX(replacement_cost) 
    FROM film 
     WHERE rating = 'R'); 

你需要某种形式的聚集,使子选择标量值。在你的查询中使用MAX()会给你一个额定R电影的最高replacement_cost。

要获得特定电影的replacement_cost,那么你需要做同样的事情,但修改你的where语句是你想要的电影。说出你所知道的film_id那么你可以做:

SELECT title 
FROM film 
WHERE replacement_cost > 
    (SELECT replacement_cost 
    FROM film 
     WHERE film_id = 123); 

注意我脱下MAX(),因为从表中你不使用主键或标准,将选择一个标值时(1列1行)实际上不得不使用聚合。