Mysql 为db-sql的每一行查找最低值
我得到了一张价格信息表,如下图所示,我正在尝试查询数据库,以返回“项目”和最便宜的供应商价值 所以下表是Mysql 为db-sql的每一行查找最低值,mysql,sql,Mysql,Sql,我得到了一张价格信息表,如下图所示,我正在尝试查询数据库,以返回“项目”和最便宜的供应商价值 所以下表是 自行车,供应商3-120.43 鞋,供应商2-19.99 球,供应商1-5.50 这是否可能与sql查询有关,或者您是否需要输出所有值,然后使用php(或所选语言)对其进行过滤 更改您的模式 表供应商 supplier_id supplier_name 1 Supplier 1 2 Supplier 2 3
- 自行车,供应商3-120.43
- 鞋,供应商2-19.99
- 球,供应商1-5.50
供应商
supplier_id supplier_name
1 Supplier 1
2 Supplier 2
3 Supplier 3
表产品
product_id product_name
1 Bike
2 Shoe
3 Ball
表价格
product_id supplier_id price
1 1 125.65
1 2 132.01
1 3 120.43
2 1 23.99
2 2 19.99
2 3 25.96
3 1 5.50
3 2 8.65
3 3 6.50
你的问题
SELECT product_name, supplier_name, price
FROM prices
INNER JOIN products ON products.product_id = prices.product_id
INNER JOIN suppliers ON suppliers.supplier_id = prices.supplier_id
GROUP BY prices.product_id
HAVING price = MIN(prices.price)
这是一个做你想做的事情的糟糕模式。如果有一千个供应商呢?正如Wallyk提到的,这不是一个好的模式设计。将供应商分组到另一个表。然后你有一个产品表。您有一个定价表,其中包含产品和供应商的外键SQLite是否支持LEAST()?可能有一个等价的,只是名称不同而已。但是我找不到。
SELECT product_name, supplier_name, price
FROM prices
INNER JOIN products ON products.product_id = prices.product_id
INNER JOIN suppliers ON suppliers.supplier_id = prices.supplier_id
GROUP BY prices.product_id
HAVING price = MIN(prices.price)