2017-05-26 3 views
0

Ich habe eine Tabelle mit dieser Daten:SQL vergleichen und wählen Sie Reihen

enter image description here

Ich möchte die thread_id nur durch die user_id 140 und 1.

So in meinem Beispiel geteilt bekommen die Ergebnis wäre 356 und 358.

Mit dieser Anfrage

select a.user_id , b.user_id, a.thread_id 
from `wp_bp_messages_recipients` as a, `wp_bp_messages_recipients` as b 
where a.thread_id = b.thread_id 
and a.user_id = 1 
and b.user_id = 140 

Ich habe 356, 358, 359, aber ich möchte nicht die thread_id 359, weil es mit der user_id 5 geteilt wird.

Vielen Dank für Ihre Hilfe!

Antwort

0

Sie GROUP BY mit unterschiedlichen COUNT verwenden können, zum Beispiel:

SELECT thread_id 
FROM table_name 
WHERE thread_id NOT IN (SELECT thread_id FROM table_name WHERE user_id NOT IN (1, 140)) 
GROUP BY thread_id 
HAVING COUNT(DISTINCT(user_id)) = 2; 
+0

Danke, aber ich bin das gleiche Ergebnis mit dieser Anfrage bekommen: http://imgur.com/a/CB9wI (Prüfung auf phpMyAdmin) – Jean

+0

Vielen Dank es funktioniert :) Es ist die schnellste Anfrage möglich? Ich habe einen riesigen Tisch. – Jean

+0

Ich habe eine Bedingung entfernt, versuchen Sie es jetzt? Ja, es sollte in Ordnung sein, solange die Spalte 'thread_id' indexiert ist. –