table1というテーブルには、null値を持つfield1というフィールドがあります。このクエリは行を返しません:NULL値を含むフィールドを持つSQLテーブル
SELECT *
FROM table1
WHERE field1 NOT IN
(
SELECT field1
FROM table1
)
私はこのクエリを書くより良い方法があります。この動作の原因は、null値を含むフィールドではnotを使用することです。
table1というテーブルには、null値を持つfield1というフィールドがあります。このクエリは行を返しません:NULL値を含むフィールドを持つSQLテーブル
SELECT *
FROM table1
WHERE field1 NOT IN
(
SELECT field1
FROM table1
)
私はこのクエリを書くより良い方法があります。この動作の原因は、null値を含むフィールドではnotを使用することです。
OK、私はここでのポイントを逃しかもしれないが、あなたの問合せを修正するための1つの方法は次のとおりです。
ステップ1:table1.field1
のすべての値を取ります。
ステップ2:?field1
の価値確かにこれは常に空のセットを返し
ステップ1で得られた値の中ではありませんすべてのtable1
行を返しますかプライマリキーフィールドがあることが前提で
ありがとうございます。ここに例があります。 (1、 'book'、8) TestTable値(2、 'video'、7)に挿入 TestTable値に挿入します。 (3「ビデオ」、NULL) 選択*タイプ=「著書」 とはしていないindexvalue TESTTABLEから私は1つの行を期待する に返される(タイプ=「映像」のTESTTABLEからindexvalue選択)上記のクエリはありませんが、存在しません。私はこれが が 'indexvalue'にヌル値があると信じています。 – w0051977
がテーブルに存在し、このスクリプトを使用することがあります。
select
t1.*
from
dbo.Table1 as t1
where
t1.field1 = 'Value1'
and not exists(select 1 from Table1 as t2 where t1.ID != t2.ID and t2.field1 = 'Value2')
このクエリを返すように期待していますか? – NPE
テーブルは正規化されていません(これは良い考えではありませんが、現時点では何もできません)。私が実行しようとしているクエリは次のとおりです:SELECT * FROM table1 field1 = 'Value1'とfield1ではない(field1 = 'value2'のtable1からfield1を選択)。 field1 = value1のテーブル1のすべての行を検索しようとしていますが、テーブルの他の行のfield1 = value2のものを除外しています。私はこのクエリを書くためのより良い方法があることを認識しています。私の質問は、NULLを含む列でNOT INを使用することです。 – w0051977
このテーブルにプライマリキーフィールドがありますか? –