cuốn sách gpt4 ai đã làm

mysql - 在 MySQL 中选择 MIN 值后选择 MIN (MAX)

In lại Tác giả: Walker 123 更新时间:2023-11-29 03:02:06 28 4
mua khóa gpt4 Nike

我有两个表:商品价格(一对多)

每个项目都有一个默认价格,但是这个价格可以在第二个表中被覆盖(在某些情况下)。

首先,我在获取所有项目并预先计算最低价格 - 默认价格与其覆盖当前价格(如果有的话?)之间的最小值时遇到了问题。

Bạn có thể thấy nó ở đây:http://sqlfiddle.com/#!2/f31d5/25

幸运的是,多亏了 stackoverflow(你可以在这里看到它:Rails select subquery (without finder_sql, if possible)),它已经解决了,但现在我遇到了类似的问题!

一旦我选择了所有项目,我能否确定新计算的字段 (min_price) 中的绝对最低(或最高)价格?

当然我试过这样的事情:http://sqlfiddle.com/#!2/f31d5/26

但是,它没有用。是否有任何智能 SQL-true 方法来获取这些值?

对于 SQLFiddle 中的这个特定场景,它应该返回 5 (MIN),或 500 (MAX)

当然,我可以像这样直接从定价表中选择它:

SELECT MIN(price) FROM prices;

但是,我不能依赖它,因为商品的默认价格可能更低,这样我就无法检查它(我认为,SELECT MIN/MAX 不适用于JOIN hoặc GROUP BY).

还有一件事要注意——我正在为我的搜索系统写这个,这只是它的一小部分,所以,“WHERE”子句在那里也很重要,因为并不是所有的项目都是实际上涉及。

有什么SMART方式(SQL方式)可以解决这个问题吗?

P.S 暂时我已经解决了这个问题,只是通过查询按 min_price (ASC/DESC) 排序并应用 LIMIT 1,然后从项目记录本身收集所需的值,但我对这个解决方案非常不满意, 所以我决定在这里问一下。

Cảm ơn

P.P.S 完全忘了提,我无法避免这个 SQL 查询,因为我有一个分页系统,它实际上附加了 LIMIT X,OFFSET Y。所以,我需要选择全局值(value),而不仅仅是特定页面!

câu trả lời hay nhất

您不需要第二次调用 min()。我认为这可以满足您的需求:

SELECT LEAST(IFNULL(MIN(prices.price),
items.default_price),
default_price) as min_price
FROM items LEFT OUTER JOIN
prices
ON prices.item_id = items.id
GROUP BY items.id;

如果您想要所有商品的最低价格,您可以删除 group by 子句。但是,我认为子查询的意图更清楚:

select min(min_price)
from (SELECT LEAST(IFNULL(MIN(prices.price),
items.default_price),
default_price) as min_price
FROM items LEFT OUTER JOIN
prices
ON prices.item_id = items.id
GROUP BY items.id
) p;

关于mysql - 在 MySQL 中选择 MIN 值后选择 MIN (MAX),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21815521/

28 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress