0

aanmeldingen テーブル内に次のテーブル構造があります。

username      varchar(16) NOT NULL
introduce_van varchar(16) NULL

次の 3 行のデータがあります。

Username Introduce_van   
Test1    NULL
Test2    Test1
Test3    NULL

ここで、すべてのユーザー名が Introduce_van になく、Introduce_van の値が NULL であることを選択したいと考えています。

私はこのSQLでそれを試しました:

SELECT username 
FROM aanmeldingen 
WHERE username NOT IN
      (SELECT introduce_van  
       FROM aanmeldingen 
       WHERE introduce_van != 'NULL')

このクエリは次を返します。

Test2, Test3

だから私が追加すると思った:

AND introduce_van = 'NULL'

Test3 だけが返されます。

しかし、それは0行を返します。

選択クエリを修正して、Test3 (Introduce_van ではなく、Introduce_van NULL.

誰かがこのクエリを手伝ってくれますか?

4

3 に答える 3

0

「Introduce_van にないすべてのユーザー名を選択したい、またはIntroduce_van の値が NULL である」ということですか。???

もしそうなら、これを使用してください:

 SELECT Distinct username 
 FROM aanmeldingen a 
 WHERE introduce_van Is Null  
     Or Not exists 
      (SELECT * FROM aanmeldingen 
       WHERE introduce_van = a.userName)
于 2013-03-21T01:01:00.507 に答える
0

もう 1 つの方法は、and notを使用してNULL値を使用LEFT JOINおよびフィルタリングすることです。IS NULL=! NULL

SELECT  a.UserName
FROM   tableName a
        LEFT JOIN tableName b
            ON a.username = b.Introduce_van
WHERE   b.Introduce_van IS NULL AND   
        a.Introduce_van IS NULL

出力

╔══════════╗
║ USERNAME ║
╠══════════╣
║ Test3    ║
╚══════════╝    
于 2013-03-21T00:57:27.517 に答える