【问题标题】:How to join on price but allow for +/- 30% difference MySQL如何加入价格但允许 +/- 30% 的差异 MySQL
【发布时间】:2019-08-03 10:42:43
【问题描述】:

我正在尝试在 MySQL Workbench 中加入两个关于产品价格的表,但允许 +/- 30% 的差异。例如,如果一个表的产品价格为 10 美元,而另一个表的产品价格为 13 美元,则该产品仍会显示在结果集中。任何想法将不胜感激。

提前致谢!

谢谢大家。我要找的是:

如果你要加入表 A:

和表 B:

它会返回产品 123 和 456,而不是 789

【问题讨论】:

  • 请提供样本数据和期望的结果。加入价格专栏似乎。 . .不寻常。

标签: mysql sql mysql-workbench


【解决方案1】:

你描述的on逻辑是:

on t1.price >= t2.price * 0.7 and t1.price <= t2.price * 1.3

但是,我怀疑这解决了一个真正的问题。

编辑:

对于您的示例数据:

select a.productId, a.price, b.price
from a join
     b
     on a.productId = b.productId and
        a.price >= 0.7 * b.price and a.price <= 1.3 * b.price;

【讨论】:

  • 我删除了我的评论,这个计算保留了查询 "sargable"(如果 anny 可以使用价格索引),这要好得多。 + 1 .. “但是,我怀疑这是否解决了一个真正的问题。” 我很确定 topicstarter 需要加入 product_id、product_number、ean 代码以及此
  • @Brad。 . .您是否有理由更喜欢 Mandy 的答案中更复杂的表达而不是这个?我注意到你不接受这个答案。
  • “有什么理由让你更喜欢 Mandy 的答案中更复杂的表达式而不是这个?” 我猜@Brad 想要一个返回错误结果的查询@987654324 @ 在该查询中没有考虑到它不仅是一个更复杂的表达式
猜你喜欢
  • 1970-01-01
  • 2021-05-19
  • 1970-01-01
  • 2011-07-24
  • 2020-02-07
  • 2023-01-18
  • 2021-11-12
  • 2016-05-09
  • 1970-01-01
相关资源
最近更新 更多