2013-06-05 35 views
1

我試圖設計查詢與OR和NAND操作,可以有人告訴我查詢是否正確:選擇查詢與OR和NAND

問題1:該查詢是否正確?

select * from country where country_code='AL' UNION (SELECT * from country 
WHERE country_id NOT IN 
     (SELECT country_id from country 
       where country_name='Land islands' 
     UNION 
     SELECT country_id from country 
       where country_code='AX' 
     )); 

我在我的另一個問題的幫助下創建了查詢;

Ref:

問題2:

我想它們之間用5查詢與AND,NOT,NAND,OR操作。 我最多創建了3個(請檢查我的問題1)我需要幫助來創建5個選擇查詢。

我的應用程序是搜索應用程序,用戶可以在每個塊之間使用i5查詢塊搜索數據庫,我們有如下所述的操作。但是這些操作是在一張桌子上進行的。

說明:

我想選擇一個表中的記錄,我會在表之間使用許多操作。 MAX 5操作查詢。

查詢1,查詢2,查詢3,查詢4,查詢5.

例:

(Query 1 AND Query 2 OR Query 3 NAND Query 4 NOT Query 5) 
(Query 1 OR Query 2 OR Query 3 OR Query 4 OR Query 5) 
(Query 1 AND Query 2 AND Query 3 AND Query 4 AND Query 5) 
(Query 1 NOT Query 2 NOT Query 3 NOT Query 4 NOT Query 5) 

等。在查詢塊可能會發生變化之間的操作...我會寫根據我的PHP腳本,但我想以這樣的方式,我可以參加每個邏輯進行邏輯..

現在我需要的幫助

+1

在你的第五查詢要選擇什麼。 – Rahul

+0

查詢是否正確取決於您試圖達到的目標。根據你的問題,目前尚不清楚。您可能正在查找某些記錄,或者您可能正在嘗試使用特定的關鍵字。 –

+0

檢查我更新的問題.. – TomPHP

回答

2

爲什麼您使用的是UNION之間相同Table。您可以通過使用operators輕鬆完成此查詢,如

Select * from country where country_code='AL' or (country_name <> 'Land islands' and country_code <> 'AX'); 

希望它適合你。

+0

你能爲我提供一個參考鏈接,讓我明白了使用我的查詢「<>」操作符的..你可以給我任何例子或者想法用5查詢它們之間我可以使用OR,AND,NAND,NOT 。如果它的OR,然後我可以這樣做,但是這個NAND,NOT操作混淆.. – TomPHP

+0

你能檢查我更新的問題以作進一步參考嗎? – TomPHP

+1

這是''not(columnname1 and columnname2)''NAND' 「NOT IN」表示你的「NOT」。現在應用你的邏輯。 – Rahul

2

最簡單的方法來寫你的第一個查詢:

select * 
from country 
where country_code='AL' and country_name not in ('Land islands', 'AX') 

這工作假設country_idcountry表獨特的下 - 基於命名一個合理的假設。如果情況並非如此,則查詢會稍微複雜一些。

你原來的查詢需要的表的多次掃描,防加入爲NOT IN使用子查詢,並聚集刪除重複(它有union,而不是union all)。

修訂後的版本只是掃描表,保留匹配where子句的行。

根據您的第一個查詢,你可以通過在where條款使用ANDOR(也許INNOT IN)做你想要的一切。

+0

這個查詢工作,如果我在同一列中搜索不同的列?那麼它將如何來? – TomPHP

+0

你可以檢查我的更新問題解釋會議.. – TomPHP