我设法在一些帮助下想出了这个,但由于某种原因它不能正常工作。 最后的整个行与类别似乎是相当随机的我不能完全解决它的作用。
使用或持有似乎和月份一样正常工作,我相信如果所有项目都在一般类别中,但是在任何其他地方都可以正常工作,这很奇怪。
如果有人能看到问题,我真的很感激。
WHERE (Status = 'Used' OR Status = 'Holding') AND MONTH( Display_Date )=4 AND Category = 'General' OR Category = 'mountains' OR Category = 'rivers' OR Category = 'sky' OR Category = 'crass' OR Category = 'sea' OR Category = 'flowers'
答案 0 :(得分:0)
很可能它与括号有关。我猜你想要像.-
这样的东西WHERE (Status = 'Used' OR Status = 'Holding') AND
MONTH(Display_Date) = 4 AND
(Category = 'General' OR Category = 'mountains' OR Category = 'rivers' OR Category = 'sky' OR Category = 'crass' OR Category = 'sea' OR Category = 'flowers')
请注意,AND
的优先级高于OR
,因此,如果没有括号,只要任何OR语句为true
,原始条件就为true
,无论之前的AND
条件如何。
答案 1 :(得分:0)
我假设您说的是,应该返回任何与您指定的任何类别值匹配的结果(以及匹配Status和Display_Date的检查)。如果是这种情况,您需要将所有检查包括在括号中的Category:
WHERE (Status = 'Used' OR Status = 'Holding') AND MONTH( Display_Date )=4 AND (Category = 'General' OR Category = 'mountains' OR Category = 'rivers' OR Category = 'sky' OR Category = 'crass' OR Category = 'sea' OR Category = 'flowers')
答案 2 :(得分:0)
AND
优先于OR
,因此您现在阅读的条件是:
WHERE ((Status = 'Used' OR Status = 'Holding') AND MONTH( Display_Date ) = 4 AND Category = 'General') OR Category = 'mountains' OR Category = 'rivers' OR Category = 'sky' OR Category = 'crass' OR Category = 'sea' OR Category = 'flowers'
我认为你想要这个:
WHERE status IN ('used', 'holding')
AND MONTH(Display_Date) = 4
AND category IN ('general', 'mountains', 'rivers', 'sky', 'grass', 'sea')