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

时间:2013-04-09 14:45:44

标签: php mysql comparison

如果我重复这个问题,我很抱歉,但是,我找不到任何可以帮助我的事情。

无论如何,这就是问题:

我正在写一个约会应用程序,在这个应用程序中,我在共同感兴趣的部分讨厌。

我的意思是,你有一个关于一个人的3个选项(你想与他/她约会吗?是的,也许,不是)。

所以,我创建了一个表,它可以保存你的userId,你想要约会的人,以及你的回答(是的,没有或者可能)。

有没有办法比较,如果你说是或可能,而另一个人说是或可能会返回像共同人的东西?

等等(如果您说是或否,并且该人说是或否则选择所有共同人)。

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

我的英语没有用,但是......我是巴西人

5 个答案:

答案 0 :(得分:6)

像这样,

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    ║
╚═════════╩═════════╩══════════╝

答案 1 :(得分:1)

非常感谢你。根据你的回答,我达到了这个目的:

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相互作用的人。当用户访问他的共同页面时,这会很方便,你知道吗?

好吧,到目前为止一切都那么好......谢谢你们,我会报告任何错误。但是,我们希望不要; - )

答案 2 :(得分:0)

SELECT him.id as "him",  
her.id AS "her",  
FROM match him, match her  
WHERE him.id = her.id OR her.id=him.id;

您可以根据需要扩展...以匹配是/否/可能字段。

答案 3 :(得分:0)

这会有用吗?

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

http://www.sqlfiddle.com/#!2/9170c/1

如果您想要特定回复的结果(是,可能是),您可以在WHERE条件中添加该结果。

答案 4 :(得分:0)

类似的东西:

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");