2016-06-29 63 views
0

我想基于两个条件反之亦然在MySQL查询子句

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

但此查询可以给我这样的记录来选择记录:

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

在2和3的ID,该记录具有相同的值FromPersonID和ToPersonID

我想要的是,它只会检查两个字段之间的反向。

任何身体能帮助实现这个吗?

谢谢。

回答

1

如果你想获得

 2    1    1 
    3    2    2 


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

否则,如果你想获得其对于这两列不同值的记录

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

第二部分是我想要的,但查询没有按”达到我想要的。你可以测试它。 –

+0

我已经测试过它更新的示例数据集,请检查其工作 –

+0

奇怪的是,在我的记录中,FromPersonID将始终为1,并且'TOPERSONID'将始终为2,而不是反之亦然。 –