2016-06-29 12 views
0

Ich mag Datensatz auszuwählen, basierend auf zwei bedingteViceversa in mysql query Klausel

SELECT * 
    FROM record 
    WHERE FromPersonID in (1,2) AND 
    ToPersonID in (1,2) 

jedoch diese Abfrage kann mir so einen Rekord geben:

+--------+----------------+---------------- 
| id | FromPersonID | ToPersonID | 
+--------+----------------+---------------- 
    1    1    2 
    2    1    1 
    3    2    2 
    4    2    1 
    5    1    2 

In der ID von 2 und 3, der Datensatz hat den gleichen Wert in FromPersonID und ToPersonID

Was ich will ist, dass es nur das Umgekehrte zwischen den beiden Feldern überprüfen wird.

Kann irgendein Körper helfen, dies zu erreichen?

Vielen Dank.

Antwort

1

Wenn Sie

 2    1    1 
    3    2    2 


SELECT * 
    FROM record 
    WHERE FromPersonID in (1,2) AND 
    ToPersonID in (1,2) and FromPersonID=ToPersonID; 

sonst erhalten möchten, wenn Sie bekommen RECORDS wollen, die anderen Wert für diese beiden Spalten

SELECT * 
     FROM record 
     WHERE FromPersonID in (1,2) AND 
     ToPersonID in (1,2) and FromPersonID!=ToPersonID; 



SELECT * FROM TT; 
+------+--------------+------------+ 
| ID | FromPersonID | TOPERSONID | 
+------+--------------+------------+ 
| 1 |   1 |   2 | 
| 2 |   1 |   1 | 
| 3 |   2 |   2 | 
| 4 |   2 |   1 | 
| 5 |   1 |   2 | 
+------+--------------+------------+ 
5 rows in set (0.00 sec) 

SELECT *  FROM TT  WHERE FromPersonID in (1,2) AND TOPERSONID in (1,2) and FromPersonID!=TOPERSONID; 
+------+--------------+------------+ 
| ID | FromPersonID | TOPERSONID | 
+------+--------------+------------+ 
| 1 |   1 |   2 | 
| 4 |   2 |   1 | 
| 5 |   1 |   2 | 
+------+--------------+------------+ 
3 rows in set (0.00 sec) 
+0

Der zweite Teil ist das, was ich will, aber die Abfrage doesn‘ t erreichen, was ich will. Du kannst es testen. –

+0

Ich habe es bereits getestet aktualisierten Beispieldatensatz überprüfen Sie bitte seine Arbeit –

+0

Seltsam, in meinem Datensatz die 'FromPersonID' wird immer 1 UND' TOPERSONID' wird immer 2 sein, keine Viceversa record. –