Php mysql如何比较同一表中的两行?

Php mysql如何比较同一表中的两行?,php,mysql,comparison,Php,Mysql,Comparison,如果我重复这个问题,我很抱歉,但是,我没有找到任何可以帮助我的东西 无论如何,这就是问题所在: 我正在写一个约会申请,在这个应用程序中,我正在窃听双方的兴趣 我的意思是,关于一个人,你有三个选择(你想和他/她约会吗?是的,也许,不) 因此,我创建了一个表,它保存了您的用户id、您想要约会的人员id以及您的响应(是、否或可能) 如果你说“是”或“可能”,而另一个人说“是”或“可能”,是否有一种方法可以比较,他会返回类似于一个共同的人的东西 例如(如果您说是或否,而对方说是或否,则选择所有共同的人)

如果我重复这个问题,我很抱歉,但是,我没有找到任何可以帮助我的东西

无论如何,这就是问题所在:

我正在写一个约会申请,在这个应用程序中,我正在窃听双方的兴趣

我的意思是,关于一个人,你有三个选择(你想和他/她约会吗?是的,也许,不)

因此,我创建了一个表,它保存了您的用户id、您想要约会的人员id以及您的响应(是、否或可能)

如果你说“是”或“可能”,而另一个人说“是”或“可能”,是否有一种方法可以比较,他会返回类似于一个共同的人的东西

例如(如果您说是或否,而对方说是或否,则选择所有共同的人)

如果听起来有点混乱,我很抱歉,但如果有疑问,我可以更好地解释

不过,我的英语没用。。。。我是巴西人类似这样的人

SELECT  LEAST(a.UserID, a.PersonID) AS Person1,
        GREATEST(a.UserID, a.PersonID) AS Person2,
        a.Response
FROM    TableName a
        INNER JOIN TableName b
            ON  a.UserID = b.PersonID AND
                a.PersonID = b.UserID AND
                a.Response = b.Response
GROUP   BY Person1, Person2
╔════════╦══════════╦══════════╗
║ USERID ║ PERSONID ║ RESPONSE ║
╠════════╬══════════╬══════════╣
║      1 ║        2 ║ yes      ║
║      2 ║        1 ║ yes      ║
║      3 ║        4 ║ no       ║
║      4 ║        3 ║ yes      ║
║      5 ║        6 ║ maybe    ║
║      6 ║        5 ║ maybe    ║
╚════════╩══════════╩══════════╝
假设你有这样的记录

SELECT  LEAST(a.UserID, a.PersonID) AS Person1,
        GREATEST(a.UserID, a.PersonID) AS Person2,
        a.Response
FROM    TableName a
        INNER JOIN TableName b
            ON  a.UserID = b.PersonID AND
                a.PersonID = b.UserID AND
                a.Response = b.Response
GROUP   BY Person1, Person2
╔════════╦══════════╦══════════╗
║ USERID ║ PERSONID ║ RESPONSE ║
╠════════╬══════════╬══════════╣
║      1 ║        2 ║ yes      ║
║      2 ║        1 ║ yes      ║
║      3 ║        4 ║ no       ║
║      4 ║        3 ║ yes      ║
║      5 ║        6 ║ maybe    ║
║      6 ║        5 ║ maybe    ║
╚════════╩══════════╩══════════╝
查询的输出是

╔═════════╦═════════╦══════════╗
║ PERSON1 ║ PERSON2 ║ RESPONSE ║
╠═════════╬═════════╬══════════╣
║       1 ║       2 ║ yes      ║
║       5 ║       6 ║ maybe    ║
╚═════════╩═════════╩══════════╝
您可以根据需要进行扩展。。。匹配“是/否/可能”字段。

这样行吗

SELECT * FROM test t1 INNER JOIN test t2 ON t1.id = t2.personid AND t2.id=t1.personid WHERE t1.response=t2.response;

如果您想要特定响应的结果(是的,可能是),您可以将其添加到
WHERE
条件中。

类似于:

Select Userid As p1, Personid p2
From YourTable
Where (Response like "Yes" OR Response like "Maybe") AND p2 IN(
Select Userid
From YourTable
Where Userid = p2 AND Personid = p1 AND (Response like "Yes" OR Response like "Maybe");

非常感谢你。根据你的回答,我得出以下结论:

SELECT p2.atirador AS mutual
FROM paqueras AS p1, paqueras AS p2
WHERE p2.alvo = $UserID
AND p1.atirador = $UserID
AND p2.atirador = p1.alvo
AND (
p1.resposta1 =  "sim"
OR p1.resposta1 =  "talvez"
)
AND (
p2.resposta1 =  "sim"
OR p2.resposta1 =  "talvez"
)
我做了什么?我会试着解释,我会得到所有与用户ID相互的人。当用户访问他的共同页面时,这会很方便,你知道吗


嗯,到目前为止还不错。。。谢谢你们,我会报告任何错误。但我们希望不是;-)

您能给出示例记录吗?请包括您的表模式。也许减号运算符<代码>从uniqueKey=1的tableName中选择A、B、C减去从uniqueKey=2的tableName中选择A、B、C!可能
内部连接
可以帮助您。但是我们需要一些代码或数据库模式来帮助您是的-您可以做一个非常好的自连接,但是,我如何才能返回一个特定的用户呢?我的意思是,在客户端仪表板中,必须打印他是个人ID的值。