1

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

私の別の質問の助けを借りてクエリを作成しました。

参照:

質問2:

AND、NOT、NAND、OR演算を間に挟んだ5つのクエリを使用したい。最大 3 つ作成しました (質問 1 を確認してください) 5 つの選択クエリを作成するためのサポートが必要です。

私のアプリケーションは、ユーザーが以下のような操作を行う各ブロックの間に i5 クエリ ブロックを使用してデータベースを検索できる検索アプリケーションです。ただし、操作は 1 つのテーブルで実行されます。

説明:

テーブル内のレコードを選択したいのですが、テーブル間で多くの操作を使用します。クエリ側の 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スクリプトを記述しますが、各ロジックを結合できるようにロジックを実行したい..

今、私は助けが必要です

4

2 に答える 2

2

UNION同じを使用している理由Tableoperatorslikeを使用して、このクエリを簡単に完了することができます。

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

それがうまくいくことを願っています。

于 2013-06-05T13:04:04.773 に答える
2

最初のクエリを作成する最も簡単な方法:

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

country_idこれは、テーブル内で一意であるという仮定の下で機能します。これcountryは、命名に基づく合理的な仮定です。そうでない場合、クエリはもう少し複雑になります。

元のクエリには、テーブルの複数のスキャンNOT IN、サブクエリを使用したアンチ結合、および重複を削除するための集計が必要です (union代わりに がありunion allます)。

where改訂版では、テーブルをスキャンするだけで、句に一致する行が保持されます。

最初のクエリに基づいて、句でANDand OR(およびおそらくINand NOT IN)を使用するだけで、必要なことをすべて行うことができます。where

于 2013-06-05T13:21:23.660 に答える