我有这个数据库:
我有这个 sql:(黑色和白色)
SELECT
SUM(XS) AS TotalXS
FROM
(SELECT XS
FROM `bng`
WHERE Color = 'White'
AND Action = 'Add' OR Action = 'Transfer Location'
UNION ALL
SELECT (XS*-1) AS GetXS
FROM `bng`
WHERE Color = 'White' AND Action = 'Used/ Damaged') AS FinalXS
我的问题是:此 SQL 仅返回“WHITE”的错误总数。查看下面的结果:
对于所有列,White
的结果都应该是“13”。我试图找到解决方案,但没有一个对我有用。我也想知道我是否做错了什么。希望你们能帮我解决这个问题。
最佳答案
问题是第一个子查询中缺少括号和(缺少)运算符优先级:
WHERE Color = 'White'
AND Action = 'Add' OR Action = 'Transfer Location'
你可能希望这是
WHERE Color = 'White'
AND ( Action = 'Add' OR Action = 'Transfer Location' )
而数据库将其解释为
WHERE ( Color = 'White' AND Action = 'Add' )
OR Action = 'Transfer Location'
关于mysql - SQL 返回错误总数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43340876/