0

条件付きSQLを作りたいです。1 つのテーブル " users" があり、2 つの列があります(id, status)

ステータスに基づいてユーザー ID を検索する必要があります。

例: 以下の説明に従って、5 秒ごとにデータベースから (AJAX によって) クエリを実行しています。

私のウォール(html上)に以下の結果があるとしましょう:

id1: 1
status2: "A"

id2: 2
status2: "B"

テーブル「ユーザー」からIDを取得する必要がありますが、ウォールでステータスが変更されていない場合はデータベースからIDを除外します。

したがって、アルゴリズムは次のようになります。

Get all IDs from table "users" but exclude the IDs (1,2) from database 
(if and only if) their status = ("A", "B").

簡単に言うと、ID (1,2) を含むすべての ID を取得する必要があります。ただし、ID (1,2) の場合: 対応するステータスがそれぞれ NOT EQUAL ("A"、"B") の場合に備えて、それらを取得する必要があります。

ただし、(3,4,5,...) のように (1,2) 以外の ID については、無条件で取得する必要があります。

データベース レコードが巨大で、5 秒ごとにチェックが行われる場合に、このソリューションが優れたパフォーマンスを提供してくれると非常にありがたいです。

4

2 に答える 2

0

私が正しく理解していれば、次のようなものが必要です。

WHERE (id IN (1, 2) AND status NOT IN ('A', 'B'))
   OR (id NOT IN (1, 2))

これは短くまとめることができます(ただし、読みにくいと思います):

WHERE id NOT IN (1, 2) OR status NOT IN ('A', 'B')
于 2013-06-20T17:15:13.063 に答える
0

それはあなたが探しているものですか:

SELECT id FROM table1 WHERE id NOT IN
(SELECT id FROM table1 WHERE id IN (1,2) AND status IN ('A','B'))
于 2013-06-20T19:19:40.190 に答える