【问题标题】:SQL: Comparing 2 tables and returning any mismatched recordsSQL:比较 2 个表并返回任何不匹配的记录
【发布时间】:2019-09-25 16:31:07
【问题描述】:

我有 2 个表,orders 和 orderlines,与 key orderID 链接。订单条目由不同的销售额/单位数量组成,并作为单独的记录记录在订单行表中。 (示例如下)

我希望能够进行查询以验证/错误检查订单表中的销售额/单位值是否与该特定产品 ID 的订单行总和相对应,并返回销售额/单位不匹配的订单 ID总计。

到目前为止,我有以下查询,但我收到错误代码 1111 或 1248。

任何帮助将不胜感激!

【问题讨论】:

  • from 子句中的子查询后缺少别名。我认为这是一个印刷错误,所以我投票结束。

标签: mysql sql group-by mysql-workbench where-clause


【解决方案1】:

您没有正确汇总表格订单线。
您比较总和而不从查询中返回它们。
试试这个:

select o.orderid
from orders o inner join (
  select orderid, sum(sales) sumsales, sum(units) sumunits
  from orderlines
  group by orderid 
) s on s.orderid = o.orderid
where s.sumsales <> o.sales or s.sumunits <> o.units

【讨论】:

  • 非常感谢!这对我有用。我的问题只是在我使用 orderlines 内部连接的语法中吗?
  • 您的代码尝试使用不存在的列,例如 sum(sales) 和 sum(units),这些列应该在查询中计算。您还尝试加入另一个未返回的列 orderlines.orderid。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-26
  • 2010-10-14
  • 1970-01-01
  • 1970-01-01
  • 2015-08-04
相关资源
最近更新 更多