6

簡単なクエリを使用しようとしていますが、どこにも行きません。目的は、「存在しない」がどのように機能するかを「学ぶ」ことです。ユーザーのデフォルトIDと名前として「idUsuario」を含む単純なテーブルがあります。

    SELECT * FROM usuario
    WHERE NOT EXISTS (
        SELECT * FROM usuario
        WHERE u.idUsuario =16
    )

ここでは、ID が 16 ではないテーブルからすべてのユーザーを取得しようとしています。しかし、すべてのユーザーを取得するだけです。何が間違っていますか?

前もって感謝します!

4

2 に答える 2

10

以下のように、クエリの結果とサブクエリの結果を結合する必要があります

 SELECT * FROM usuario u
    WHERE NOT EXISTS (
        SELECT * FROM usuario u1
        WHERE u1.idUsuario = u.idUsuario
        and u1.idUsuario =16
    )

SQL フィドルのデモ

于 2013-09-19T20:58:42.960 に答える
3

パラドの答えは正しいです。1 つのテーブルを使用したクエリでは、NOT EXISTS. 通常、NOT EXISTS句は別のテーブルを参照します。

たとえば、idUsuario 値が別のテーブルに存在しない usuario テーブルにクエリを実行する場合は、次のようにします。

 SELECT * FROM usuario u
    WHERE NOT EXISTS (
        SELECT * FROM usuarioExclude x 
        WHERE x.idUsuario = u.idUsuario
    )

usuarioExclude テーブルには、例の 16 など、結果から除外したい任意の値を含めることができます。

于 2013-09-19T21:08:02.037 に答える