Mysql 优化按行分组的结果值(由于查询包含子查询,因此无法创建视图)
我有下表:Mysql 优化按行分组的结果值(由于查询包含子查询,因此无法创建视图),mysql,group-by,controls,Mysql,Group By,Controls,我有下表: ---------------------------- | id | product | price | ---------------------------- | 1 | 1 | 50 | | 2 | 1 | 39 | | 3 | 1 | 60 | ---------------------------- 我需要的是获得按产品(1)分组的最低价格(39),并保留最
----------------------------
| id | product | price |
----------------------------
| 1 | 1 | 50 |
| 2 | 1 | 39 |
| 3 | 1 | 60 |
----------------------------
我需要的是获得按产品(1)分组的最低价格(39),并保留最低价格的id(2)
我有这个疑问
SELECT
id,
product,
MIN(price) AS price
FROM
variant
GROUP BY
product
select B.id, A.* FROM
(SELECT product,MIN(price) AS minprice
FROM variant GROUP BY product ) A
JOIN variant B ON A.product = B.product and A.minprice = B.price
结果
----------------------------
| id | product | price |
----------------------------
| 1 | 1 | 39 |
----------------------------
但我想要的结果是
----------------------------
| id | product | price |
----------------------------
| 2 | 1 | 39 |
----------------------------
我可以通过这个查询得到结果
SELECT
id,
product,
MIN(price) AS price
FROM
variant
GROUP BY
product
select B.id, A.* FROM
(SELECT product,MIN(price) AS minprice
FROM variant GROUP BY product ) A
JOIN variant B ON A.product = B.product and A.minprice = B.price
但是我还需要使用这个查询创建一个视图,因为from中有一个子select,所以我无法创建该视图
有没有其他方法可以得到我想要的结果
我做了一个修改:您可以创建另一个视图作为子查询, 然后创建与第一个视图连接的视图,而不是子查询
CREATE VIEW min_variant AS
SELECT product,MIN(price) AS minprice
FROM variant
GROUP BY product;
CREATE VIEW min_product AS
SELECT B.id, A.*
FROM min_variant A
INNER JOIN variant B
ON A.product = B.product
AND A.minprice = B.price;
您可以创建另一个视图作为子查询, 然后创建与第一个视图连接的视图,而不是子查询
CREATE VIEW min_variant AS
SELECT product,MIN(price) AS minprice
FROM variant
GROUP BY product;
CREATE VIEW min_product AS
SELECT B.id, A.*
FROM min_variant A
INNER JOIN variant B
ON A.product = B.product
AND A.minprice = B.price;