2012-02-09 10 views
0

私は860アイテムのアイテムのリストを持っています。私はクエリを実行する:select * from tableA where item in (... items ...)私は858項目を取得します。私はtableAにないリストの2つの項目を知りたいです。リストから返されないアイテム

NOTは、リストに含まれていないアイテムをすべて返します。リストに含まれていないアイテムをすべてテーブルに追加します。質問の私の元の理解に基づいて

+0

? mysql?ポストグル?オラクル? – Bohemian

+0

@Bohemian Oracle 10g – Mike

答えて

1
私はあなたが(あなたが元に使用できることを漂っのUDFのトンがあります。 http://blog.sqlauthority.com/2007/05/06/sql-server-udf-function-to-convert-list-to-table/)一時テーブルにあなたのリストを変換することをお勧めします

あなたは一時テーブル#Listを持っていたら、することができますが、以下をせよ;

CREATE TABLE #List 
(
    [ListItem] INT 
) 

SELECT 
    * 
FROM 
    #List AS l 
LEFT OUTER JOIN 
    tableA AS t 
ON 
    t.[Item] = l.[ListItem] 
WHERE 
    t.[Item] IS NULL 

はアクションでそれを参照してください:あなたが使用しているデータベース http://data.stackexchange.com/stackoverflow/query/61259/items-not-returned-from-a-list

1

は、私はちょうど

SELECT * FROM tableA WHERE item NOT IN (... items ...) 

をキーワードNOTを追加することを提案しかし、コメントごとに上記の欲しいものを返しません。元の質問は、この新しい情報を含むように編集されました。

したがって、WHERE句のデータをクエリ可能な形式にする必要があります。ここでは、 "items"という名前の追加テーブルを作成し、各アイテムをこのアイテムテーブルに配置するINSERTステートメントを作成する方法を示します。私はあなたのデータにアクセスすることができないので、私はアイテムのために整数を使用し、より少量のデータで設定します。

--Set up some sample data 
CREATE TABLE tableA(item INT PRIMARY KEY) 

INSERT INTO tableA SELECT 1 
INSERT INTO tableA SELECT 2 
INSERT INTO tableA SELECT 3 
INSERT INTO tableA SELECT 4 
INSERT INTO tableA SELECT 9 
INSERT INTO tableA SELECT 10 

SELECT * FROM tableA WHERE item IN (0,1,2,3,4,5,6) 
SELECT * FROM tableA WHERE item NOT IN (0,1,2,3,4,5,6) 

-- Create a table and insert all the 860 items from your where clause 
CREATE TABLE items(item INT) 
INSERT INTO items SELECT 0 
INSERT INTO items SELECT 1 
INSERT INTO items SELECT 2 
INSERT INTO items SELECT 3 
INSERT INTO items SELECT 4 
INSERT INTO items SELECT 5 
INSERT INTO items SELECT 6 

-- Want to find a query that returns all of the items in the newly created items table 
-- that are not in the original tableA (in this example, the values returned are 0,5,6) 
SELECT * FROM items WHERE item NOT IN (SELECT item FROM tableA) 
+0

リスト内にない項目をすべて返します。リスト内の項目ではなく、表内にない項目 – Mike

+0

問題は明確に定義されていません。 tableAには、項目フィールドに同じ値を持つ858レコードが含まれ、858レコードが返されます。書かれている問題は、リストにtableAにない2つの項目があると仮定していますが、さらに多くの項目が存在する可能性があります。 –

+0

テーブルAには何十万ものアイテムが含まれています。アイテムはユニークです。 – Mike

関連する問題