MySQL表连接不一致

时间:2019-02-13 04:45:12

标签: mysql

我有一条SQL语句,该语句联接3个表,然后产生一些结果。

https://www.db-fiddle.com/f/v1zExsp4ZVnnq1hQYJKcXY/0

问题:DB Fiddle实际上给了我正确的结果,但我的数据库:版本:10.0.38-MariaDB-提供了不同的结果。

删除sale_category='Non-Productive'过滤器后,两个DB均显示全部48行。

但是-存在sale_category='Non-Productive'过滤器时,只有DB Fiddle可以正确过滤15行数据。

我的MariaDB过滤器错误地导致了32行数据。 (请参阅附件)

Incorrect

我的数据库正在显示应过滤的结果(例如,任何带有sale_type = CUSTOMER的行),但将它们显示为“非生产性”,我不知道为什么(尤其是在DB Fiddle中进行测试并看到所需结果之后)< / p>

  1. 为什么会这样?
  2. 是否有更有效的SQL查询?

1 个答案:

答案 0 :(得分:0)

在您的数据中找到unprod_hrs = 0时,“非生产型”销售类型没有匹配项:

SELECT tech,name,rd.rate,unprod_hrs,st.sale_category
FROM ReportData rd
INNER JOIN SaleTypes st
   ON st.sale_type=rd.name
WHERE report_id='165141' AND unprod_hrs=0 AND rd.line_type=2;

MariaDB在您的版本10.0.38中返回不正确的结果

还可以删除ReportHeader上的两个JOINS,因为它们不在查询中。