mysql - SQL 返回错误总数

标签 mysql sql

我有这个数据库:

stock database

我有这个 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”的错误总数。查看下面的结果:

enter image description here

对于所有列,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/

相关文章:

Mysql 从人类日期和时间转换为通常的时间戳

mysql - 在mysql中获取学生的相关科目

mysql - 如果两个表只有一列不同,我是否应该有两个单独的表?

php - 用于数据库设置脚本的 SQL 或 sql/PHP

javascript - NodeJS - 如何通过执行的查询获得 mysql 结果?

python - 如何检查表是否存在?

java - 如何仅使用 MyBatis 设置属性 'maxActive'?

MYSQL 获取两个值之间的差异

sql - 转换到自定义域 PostgreSQL

php - SQL 查询 - 包含不起作用的查询