【问题标题】:MySQL - SELECT with division of two values returns different number of rowsMySQL - 选择两个值的除法返回不同的行数
【发布时间】:2016-08-01 14:50:27
【问题描述】:

我有一个简单的表格“药物”,有 4 列:“EAN”、“ATC”、“数量”、“价格”。 EANs 和 ATCs 是某种药品代码,而 amount 基本上是在给定价格下购买的药品包的数量。它们都不是唯一的,行可以(并且可能确实)重复。我需要一个包裹的费用,所以我使用了:

SELECT EAN, ATC, ROUND((price/amount),2) FROM drugs

但结果的行数较少。准确地说,drugs 总共有 23,658,687 行,而查询结果只有 23,657,443 行。那 1,244 条记录怎么了?我认为结果将具有完全相同的行,但每行中都有新的计算值而不是旧的两个。

【问题讨论】:

  • drugs 中的所有记录都应该出现。自从您获得23,658,687 总数后,表格是否有可能被修改?
  • 如果您没有任何where 条件,那么此查询将返回与select * from drugs 相同的行数...您可以发布一个 sql fiddle 来解决您的问题吗?
  • 可能有些行有amount = 0
  • @TimBiegeleisen 这是本地 mysql 服务,我是唯一一个在使用它的人,自几周前创建该表以来,总共有 23,658,687 个。
  • 好的@Missy,1=1 工作。请将此作为答案,并解释为什么它会这样。

标签: mysql sql


【解决方案1】:

添加

   SELECT EAN, ATC, ROUND((price/amount),2) FROM drugs where 1=1 

这将选择您的所有记录。我不知道它为什么会起作用,但确实如此。我猜有一些完全重复的记录没有被返回,新的 WHERE 语句强制它们出现。

【讨论】:

    猜你喜欢
    • 2021-08-30
    • 1970-01-01
    • 1970-01-01
    • 2017-03-16
    • 2021-03-30
    • 2013-11-23
    • 1970-01-01
    • 2018-07-31
    • 1970-01-01
    相关资源
    最近更新 更多