我在这里找不到像这样的其他具体问题。
这是MySQL中的单个表查询。我有一本书'持有'标题的表格和'价格'列。问题是找到最低账面价格并显示具有该最小值的标题。我的问题是我只能返回一个标题,但有多个标题具有该最小值。我的代码返回的标题甚至不是有效的标题,而是表格中的第一个标题。
我目前的代码是:
SELECT TITLE,
MIN(PRICE) AS "PRICE"
FROM book;
答案 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);