2012-07-24 75 views
0

我有一个查询,我使用的作品,但现在我需要修改它,以便它排除行,如果他们有一个字段中的某些数据。MySQL - 选择所有除非查询

下面是当前的代码:

SELECT oc_ieentry,oc_sysitem,oc_item,oc_itemdesc,oc_purchasedate,oc_url 
FROM catalog 
WHERE oc_purchasedate >= date_sub(current_date, interval 21 day) 
ORDER BY oc_item ASC 

我需要做的就是在里面添加一条语句,如果oc_ieentry LIKE 1,则这些行应该不会显示。

+0

您的意思是'oc_ieentry NOT LIKE 1'我不知道'LIKE 1'的含义是什么 – mask8 2012-07-24 18:00:28

回答

1

试试这个:

SELECT 
oc_ieentry,oc_sysitem,oc_item,oc_itemdesc,oc_purchasedate,oc_url 
FROM catalog 
WHERE (oc_purchasedate >= date_sub(current_date, interval 21 day)) 
AND (oc_ieentry NOT LIKE 1) 
ORDER BY oc_item ASC 
+0

谢谢,我正在考虑这个问题。 – James 2012-07-24 18:15:15

0

为您的WHERE添加额外条件?

... 
WHERE oc_purchasedate >= date_sub(current_date, interval 21 day) AND oc_ieentry <> 1 
... 
1

您可以在WHERE子句中添加另一个条件,如:

SELECT oc_ieentry,oc_sysitem,oc_item,oc_itemdesc,oc_purchasedate,oc_url 
FROM catalog 
WHERE 
    oc_purchasedate >= date_sub(current_date, interval 21 day) 
    AND oc_ieentry != 1 
ORDER BY oc_item ASC 
+0

从技术上讲,'!='不符合ANSI SQL。 '<>'运算符是ANSI正确的非等号运算符。尽管今天大多数流行的数据库系统都支持'!=',但它仍然让我感觉不对。 – cdhowie 2012-07-24 18:01:51

+0

我已经使用了多年的MySQL,并且从未遇到'!='的问题。 T-SQL,直到最近半 - 但不是MySQL。 http://dev.mysql.com/doc/refman/5.0/en/comparison-operators.html也显示对'!='的支持。 – newfurniturey 2012-07-24 18:03:23

+0

这只是个人喜好。如果你只遵循ANSI SQL,你将错过许多由MySQL提供的好东西 – mask8 2012-07-24 18:08:49

0

您可以使用WHERE子句中的NOT关键字:

SELECT * from products WHERE prod_price NOT IN (49, 100, 999); 

帮助y OU?