簡體   English   中英

mysql如何比較同一表中的兩行?

[英]mysql How can i compare two rows in the same table?

很抱歉,如果我重復這個問題,但是,我還沒有找到任何可以幫助我的東西。

無論如何,這就是問題所在:

我正在寫一個約會應用程序,在這個應用程序中,我在共同感興趣的部分中煩惱。

我的意思是,您會為一個人提供3種選擇(您想和他/她約會嗎?是的,也許是,沒有)。

因此,我創建了一個表,其中保存了您的userId,您想約會的人的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    ║
╚════════╩══════════╩══════════╝

查詢的輸出是

╔═════════╦═════════╦══════════╗
║ PERSON1 ║ PERSON2 ║ RESPONSE ║
╠═════════╬═════════╬══════════╣
║       1 ║       2 ║ yes      ║
║       5 ║       6 ║ 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相互關聯的人。 當用戶訪問他的共同頁面時,這會很方便的,您知道嗎?

好吧,到目前為止一切順利...謝謝大家,我將報告任何錯誤。 但是,我們希望不要;-)

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

您可以根據需要擴展...以在“是/否/也許”字段上匹配。

這樣行嗎?

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條件中添加該結果。

就像是:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM