MySQL查询未按预期运行

MySQL查询未按预期运行,mysql,sql,Mysql,Sql,问题是,它返回的行中包含的内容不是car_类型中的“Datacenter…”,而是AcctType中的CapEx(本例中为OpEx)。其余的似乎都很好 为什么要这样做?改变 SELECT p.Requestor AS Requestor, p.AdjAmtOrd AS Amount_Ordered, p.Vendor_Name AS Vendor, p.Item_Description AS Item, p.Project AS Project,

问题是,它返回的行中包含的内容不是car_类型中的“Datacenter…”,而是AcctType中的CapEx(本例中为OpEx)。其余的似乎都很好

为什么要这样做?

改变

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');
为了

改变

为了


我相信你的问题在于使用AND和OR

试试这个:

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

在给定的代码中,它要么要求“or”之前的所有条件为True,要么要求“or”之后的所有条件为True。因此,第一个条件可能是错误的,正如您所经历的,只要“或”之后的一切都是正确的。

我相信您的问题在于使用AND和or

试试这个:

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

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

圆括号问题。圆括号问题。现在不会返回任何结果。@us我不知道您的数据。是否可能没有数据输入满足所有要求?还是你肯定会有结果?我搞定了,不是你的改变,是我的另一个改变,我忘了我做了。现在可以使用了。@user2867882请尝试s.controls>0(不带引号)。如果这行得通,我会把它添加到我的answer@user2867882我刚刚在评论之后看到了你的评论。请告诉我们错误是什么,以便其他人遇到同样的问题时可以将其添加到解决方案中。现在不会返回结果。@us我不知道您的数据。是否可能没有数据输入满足所有要求?还是你肯定会有结果?我搞定了,不是你的改变,是我的另一个改变,我忘了我做了。现在可以使用了。@user2867882请尝试s.controls>0(不带引号)。如果这行得通,我会把它添加到我的answer@user2867882我刚刚在评论之后看到了你的评论。请告诉我们错误是什么,这样它就可以被添加到其他有同样问题的人的解决方案中。
...
AND (p.Item_Description LIKE '%BMS%' OR  p.Item_Description LIKE '%EPMS%')
AND ...