【发布时间】:2019-11-05 01:37:24
【问题描述】:
我正在 Visual Studio 中编写一个 C# Windows 窗体应用程序,我正在尝试从购物清单中获取有关超市 2 和超市 3 中产品最低价格的数据。
我需要采取的第一步是进行正确的 SELECT 查询,从我的本地 MySQL 数据库返回此数据。
我的价格表中有以下列:
- 价格
- 条码
- supermarket_id
我还有一张超市桌子,里面有 3 个超市:
- supermarket_id = 1 NAME = 超市1
- supermarket_id = 2 NAME = 超市2
- supermarket_id = 3 NAME = 超市3
超市表中每个超市都有一个产品的价格
我正在使用以下查询让数据库返回我想要的数据:
SELECT pro.name, MIN(p.price) AS 'Lowest Price', p.supermarket_id
FROM (
SELECT i.product_barcode
FROM shopping_list_items i
WHERE i.shopping_list_id = 95
) s
JOIN prices p ON s.product_barcode = p.barcode
JOIN products pro ON s.product_barcode = pro.barcode
GROUP BY s.product_barcode;
以上查询返回产品名称、产品最低价格和supermarket_id。但是,即使产品的价格不在超市 1 而是在超市 3,supermarket_id 始终为 1。
所以我现在的问题是我的查询必须如何才能获得超市 ID 以及特定杂货清单中产品的最低价格
【问题讨论】:
-
啊!可爱的 MySQL 运行聚合查询,缺少
GROUP BY列,在任何其他数据库中,这个查询都应该失败。请务必始终打开ONLY FULL GROUP BY 模式。这种模式对 SQL 初学者来说是一种伤害。
标签: mysql sql select subquery min