我需要找到所有电影的标题,这些电影的重置成本要高于一些R级电影。
电影桌有......
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 :(得分: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行)时,实际上不必使用聚合。