gpt4 book ai didi

SQL 选择 : picking the right distinct record based on another field

转载 作者:可可西里 更新时间:2023-11-01 08:22:15 26 4
gpt4 key购买 nike

根据选择在另一个字段中具有最小值的记录,如何过滤记录列表以删除具有某些相同字段的记录?请注意,仅获取最小值是不够的...我需要从同一记录中获取其他字段。

我有一个“产品”表,我正在尝试添加应用优惠券代码的功能。由于发票的生成方式,以不同的成本销售产品被视为不同的产品。在数据库中,您可能会看到:

Product ID, Product Cost, Product Name, Coupon Code
1, 20, Product1, null
2, 10, Product1, COUPON1
3, 40, Product2, null

我有一个查询选择现在可用的所有产品的列表(基于其他标准;我正在大量简化它)。问题是,对于上述情况,我的查询返回:

  1 - Product1 for $20
2 - Product1 for $10
3 - Product2 for $40

这会向客户展示(假设他们已经输入了优惠券代码),并且以两种价格向客户展示相同产品显然是一种错误的形式。我想要的是:

  2 - Product1 for $10
3 - Product2 for $40

即显示每种产品成本最低的版本。

我需要一个适用于 MySQL 的解决方案,但首选解决方案是标准 SQL。

最佳答案

试试这个:

SELECT T2.* 
FROM
(
SELECT `Product Name` AS name, MIN(`Product Cost`) AS cost
FROM products
GROUP BY `Product Name`
) T1
JOIN products T2
ON T1.name = T2.`Product Name`
AND T1.cost = T2.`Product Cost`

要获得与您描述的字符串完全相同的输出,请将第一行替换为:

SELECT CONCAT(`Product ID`, ' - ', T1.name, ' for $', T1.cost)

关于SQL 选择 : picking the right distinct record based on another field,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4419187/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com