选择共享MIN(PRICE)值|的多个书籍标题MySQL的

时间:2014-11-16 23:19:02

标签: mysql sql min

我在这里找不到像这样的其他具体问题。

这是MySQL中的单个表查询。我有一本书'持有'标题的表格和'价格'列。问题是找到最低账面价格并显示具有该最小值的标题。我的问题是我只能返回一个标题,但有多个标题具有该最小值。我的代码返回的标题甚至不是有效的标题,而是表格中的第一个标题。

我目前的代码是:

SELECT TITLE,
       MIN(PRICE) AS "PRICE"
FROM book;

4 个答案:

答案 0 :(得分:3)

您可以通过子查询找到价格最低的图书的标题。

SELECT TITLE
FROM   book
WHERE  PRICE = (SELECT MIN(PRICE)
                FROM   book); 

您问题中的查询不是有效的标准SQL,并且会被大多数其他RDBMS拒绝。

MySQL不会引发错误(yet - though this is coming),但也不保证结果的任何特定语义。

答案 1 :(得分:1)

您可以在一个子查询中计算最低价格,然后查找价格与外部查询相匹配的所有图书。

SELECT a.title, a.price
FROM book AS a
JOIN (SELECT MIN(price) AS minprice
      FROM book) AS b
ON a.price = b.minprice

另一种写作方式是:

SELECT titla, price
FROM book 
WHERE price = (SELECT MIN(price) FROM book)

答案 2 :(得分:0)

首先,创建一个包含最便宜的图书(最低价格)的视图:

CREATE VIEW minPrice AS
           (SELECT MIN(price) AS price
            FROM book)

其次,使用以下视图加入您的表:

SELECT book.price, book.title
FROM book
    JOIN minPrice
        ON book.price=minPrice.price

答案 3 :(得分:0)

如果您使用像......这样的子查询。

NODE_PATH

如果使用大型数据库,这些速度会慢一些,因为有两个 SELECT 语句。虽然它会很好......你也可以使用 - :

SELECT TITLE
FROM   book
WHERE  PRICE = (SELECT MIN(PRICE)
            FROM   book);