2012-07-24 96 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?