SQL Sub Query查找数据

时间:2016-09-23 21:17:29

标签: sql sql-server

我需要找到所有电影的标题,这些电影的重置成本要高于一些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');

1 个答案:

答案 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行)时,实际上不必使用聚合。