MySQL 查询未按预期运行

标签 mysql sql

SELECT
    p.Requestor AS Requestor,
    p.AdjAmtOrd AS Amount_Ordered,
    p.Vendor_Name AS Vendor,
    p.Item_Description AS Item,
    p.Project AS Project,
    s.car_number,
    p.PO_Year AS PO_Year,
    p.AcctType AS Account_Type,
    p.budget_sublines,
    s.car_type,
    s.requester,
    s.fbn
FROM
    Redshift_PO_Report p
INNER JOIN Redshift_MCL s ON p.Project = s.car_number
WHERE
    s.car_type LIKE 'Datacenter or Room Build - Leased%'
AND p.AcctType = 'CapEx%'
AND s.controls > '0'
AND p.Item_Description LIKE '%BMS%'
OR p.Item_Description LIKE '%EPMS%'
AND p.budget_sublines IN ('BMS', 'EPMS');

问题是它返回的行在 car_type 中包含“Datacenter...”以外的内容,在 AcctType 中包含不同于 CapEx 的内容(在本例中为 OpEx)。其余的似乎工作正常。

为什么要这样做?

最佳答案

我认为您的问题在于使用 AND 和 OR。

试试这个:

...
AND (p.Item_Description LIKE '%BMS%' OR  p.Item_Description LIKE '%EPMS%')
AND ...

在您给定的代码中,它要么要求“或”之前的所有条件都为真,要么要求“或”之后的所有条件都为真。因此,只要“或”之后的所有内容都为真,第一个条件可能为假,正如您所经历的那样。

关于MySQL 查询未按预期运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41063211/

相关文章:

mysql,innodb 设置以更快地执行查询

mysql - 将 Stardict 字典文件转换为 MySQL 数据库

mysql - 错误 1045 (28000) : Access denied for user 'root' @'localhost' (using password: NO) on Windows

mysql - PHP MySQL : You have an error in your SQL syntax

sql - 简单的SQL查询以选择一个最大值

sql - 使用 Oracle Sql developer(远程)连接到 oracle 12c

mysql - (为什么?)Greatest+Coalesce 方式比使用 or 的单个选择更快

php - MYSQL INT 加法

mysql - SQL - 获取带有条件的每个不同值的计数?

MySQL "Foreign key constraint is incorrectly formed"