2017-04-19 4 views
0

Ausführen dieser Abfrage:SELECT EXISTS Rückkehr immer gleiche Ergebnis

SELECT EXISTS (select true from "MyGroup" WHERE "UserID"=3 AND "GroupID"=17); 

Erhaltenes Ergebnis ist:

exists 
------- 
t 
(1 row) 

Es sollte nicht existieren. Es gibt keine Gruppe mit ID 17. Bestätigt in PGAdmin.

Tatsächlich gibt jede beliebige UserID und GroupID (z. B. 355, 267) das gleiche Ergebnis zurück. Was ist hier falsch?

Dank

+1

Wenn Sie innere Abfrage ausführen, es doesn Gibt es keinen Datensatz zurück? –

+0

Jetzt funktioniert es. Ich brauchte den ersten Teil der Anweisung 'SELECT EXISTS' nicht außerhalb der Klammern. Vielen Dank. – Jelphy

Antwort

0
SELECT * FROM MyGroup WHERE EXISTS(select true from MyGroup WHERE UserID=3 AND GroupID=17) 

Ein weiteres Beispiel

SELECT *FROM products WHERE EXISTS (SELECT 1 
      FROM inventory 
      WHERE products.product_id = inventory.product_id); 
1

Es ist etwas falsch mit Ihrem Zustand, weil es für mich wie erwartet funktioniert:

select exists (select true where false); 
exists 
-------- 
f 
Verwandte Themen