我执行查询时得到了双重结果。首先,我得到了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)
答案 0 :(得分:2)
SUM(.../2)
假设总是确实存在2.这是不安全的。
获取一个列而不知道它是什么情况似乎很奇怪 - 可能是current_state
,也许是date_add
。我建议您将这两者添加到SELECT
列表中(并且不包含任何GROUP BY
或SUM
)。这将为您提供关于为什么行加倍的线索。
SELECT DISTINCT ...
会摆脱倍增,但它可能会以不同的方式陷入混乱 - 假设两行合法地具有值23
。
将LEFT JOIN
更改为JOIN
。