查询时MySQL结果为double

时间:2017-03-15 14:48:45

标签: mysql sql mariadb

我执行查询时得到了双重结果。首先,我得到了3倍的数据,所以我确实更改了一下查询,现在我的表中的每条记录都是双倍(2x)。

我的查询如下:

SELECT 
    (q.totalExcl) AS totalExcl
FROM
    ex.ps_orders o LEFT JOIN
    ex.ps_oxo_quotation q ON o.id_order = q.idOrder LEFT JOIN
    ex.ps_sv_employee_meta m ON q.idEmployee = m.id_employee 
WHERE
    idEmployee = 6
        AND q.date_add >= '2017-01-01 00:00:00'
        AND o.current_state IN (3, 4, 5, 9, 13, 15, 20, 22, 23, 24, 25, 121);

我的桌子看起来像这样

╔══════════════╦
║  totalExcl   ║
╠══════════════╬
║  500.0000000 ║
║  500.0000000 ║
║  150.0000000 ║
║  150.0000000 ║
║  23.0000000  ║
║  23.0000000  ║
╚══════════════╩

我想要的就是这个:

╔══════════════╦
║  totalExcl   ║
╠══════════════╬
║  500.0000000 ║
║  150.0000000 ║
║  23.0000000  ║
╚══════════════╩

当我从查询中删除此行时它确实有效,但我稍后需要这一行(我需要从此表中获取一些名为expoled.ps_sv_employee_meta的表):

LEFT JOIN
    expoled.ps_sv_employee_meta m ON q.idEmployee = m.id_employee 

我发现解决方案已将此行SUM(q.totalExcl)更改为SUM(q.totalExcl /2)

1 个答案:

答案 0 :(得分:2)

SUM(.../2) 假设总是确实存在2.这是不安全的。

获取一个列而不知道它是什么情况似乎很奇怪 - 可能是current_state,也许是date_add。我建议您将这两者添加到SELECT列表中(并且不包含任何GROUP BYSUM)。这将为您提供关于为什么行加倍的线索。

SELECT DISTINCT ...会摆脱倍增,但它可能会以不同的方式陷入混乱 - 假设两行合法地具有值23

LEFT JOIN更改为JOIN