【问题标题】:SELECT name using MIN and MAX - mysql [duplicate]使用 MIN 和 MAX 选择名称 - mysql [重复]
【发布时间】:2015-02-18 06:07:17
【问题描述】:

所以我希望能够放映最贵的电影和最便宜的电影。基本上,我想显示电影名称及其价格。现在我可以通过这个查询获得最高和最低的租金:

SELECT MAX(rental_rate) as MaxRate, MIN(rental_rate) as MinRate 
FROM film;

但是,我如何编辑上面的查询以显示与其费率相关的电影标题?

我也试过了:

SELECT title (SELECT MAX(rental_rate) FROM film as MaxRate),
             (SELECT MIN(rental_rate) FROM film as MinRate)
FROM film;

但这没有用。

有什么建议吗?

【问题讨论】:

标签: mysql


【解决方案1】:

我在cmets中提到的问题可以找到一个合适的解决方案,但它有点复杂。我认为另一种更简单的解决方案是ORDER BY rate 并使用LIMIT 获得 1 条记录。您可以使用UNION 组合两个相似的查询以获得最低和最高费率:

(SELECT title, rental_rate 
FROM film
ORDER BY rental_rate 
LIMIT 1)
UNION
(SELECT title, rental_rate 
FROM film
ORDER BY rental_rate DESC
LIMIT 1)

UNION ALL 也可以使用,但是如果表格中只包含一部电影,您可以获得相同的标题。

请注意,此查询将返回一个最低费率的标题和一个最高费率的标题。如果您想要共享最低或最高费率的所有标题,则需要that other solution

【讨论】:

    【解决方案2】:

    您想要的是具有不同条件的两行,因此请将它们分开:

    (SELECT title, rental_rate, "most expensive" as which_title 
    from film
    ORDER BY rental_rate DESC LIMIT 1)
    UNION ALL
    (SELECT title, rental_rate, "least expensive" from film
    ORDER BY rental_rate ASC LIMIT 1)
    

    使用工作 sqlfiddle:http://sqlfiddle.com/#!2/1e290/3

    【讨论】:

    • 我觉得没那么简单。此查询为您提供了最低和最高费率以及每个人的随机标题。
    • @GolezTrol 对,你是
    【解决方案3】:

    如果您想要带有标题的最低和最高费率,也可以使用以下查询:

    select title, (SELECT MAX(rental_rate) FROM film) from film
           where rental_rate=(SELECT MAX(rental_rate) FROM film)
    
    union
    
    select title, (SELECT MIN(rental_rate) FROM film) from film
           where rental_rate=(SELECT MIN(rental_rate) FROM film)
    

    【讨论】:

      猜你喜欢
      • 2014-05-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-23
      • 2018-07-31
      • 2017-05-30
      • 2015-07-04
      相关资源
      最近更新 更多