2016-12-14 2 views
0

Ich weiß nicht, wie Sie die Abfrage für unten schreiben.Suchen von Kombinationen von bestimmten Werten

Mein Tisch ist

col1 col2 
5 1 
5 5 
5 6 
5 7 
4 5 
4 8 
4 9 
4 3 
3 3 
3 5 

ich verschiedene col1 id auswählen müssen, wo beide Parameter in col2 vorhanden ist. z. wenn i 6,7 senden sollte es mich senden 5

+1

Bitte beachten Sie, dies ist nicht eine rekursive Abfrage. Ändern Sie den Titel entsprechend. –

+0

Danke bitte schlagen Sie einen Titel vor, Sie brauchen – noobProgrammer

+0

Ihre Frage sollte die tatsächliche Tabellendefinition ('CREATE TABLE' Anweisung) und Ihre Postgres-Version enthalten. –

Antwort

0

Versuchen:

SELECT col1 
FROM mytable 
WHERE col2 IN (6, 7) 
GROUP BY col1 
HAVING COUNT(DISTINCT col2) = 2 
+0

(Ich hoffe, die DISTINCT ist redundant.) – Strawberry

+0

Keine eindeutigen Einschränkungen sind bekannt, so dass die DISTINCT benötigt wird. – jarlh

1

Dies ist wahrscheinlich zu den schnellsten Lösungen:

SELECT col1 -- already DISTINCT? 
FROM tbl t1 
JOIN tbl t2 USING (col1) 
WHERE t1.col2 = 6 
AND t2.col2 = 7; 

Unter der Annahme einer PRIMARY KEY oder UNIQUE Beschränkung auf (col1, col2), wie es ist typischerweise implementiert. Sonst hinzufügen DISTINCT.

Es gibt viele andere Möglichkeiten, relationale Division zu implementieren. Hier sind einige:

Verwandte Themen