2015-12-27 110 views
-1

我有一張這樣的桌子。什麼是查詢?

表名:消息

mid | mfrom | mto | msg 
------------------------ 
1 | a | b | hi 
2 | b | a | hello 
3 | a | c | how are you 
4 | c | a | fine 

假設我想展現的 'A' 我能夠顯示的所有行 'A' 由

`$to='a'; 
$sql = mysql_query("SELECT * 
FROM message 
WHERE mto = '$to' 
OR mfrom = '$to';"); 
while($row = mysql_fetch_array($sql)) 
{ 
echo $row['msg']; 
}` 

,但我所有的消息如果mfrommtomtomfrom相等,則只想顯示一個結果。如mfrom =amto=bmfrom=bmto=a。我想只顯示他們這樣的一個結果

mid | mfrom | mto | msg 
------------------------- 
2 | b | a | hello 
4 | c | a | fine 

請告訴我查詢。

如果有很多(用戶a和用戶b)的消息 將只顯示一次

+0

你可以添加另一個例子嗎? *如果mfrom和mto或mto和mfrom相等*有點難以遵循。 – user1269942

+0

你的問題和你的例子似乎並不一致,這使問題變得混亂。 「如果mfrom和mto或mto和mfrom是相等的」聽起來像是在試圖忽略來自某個人的消息。然而,「如果mfrom = a和mto = b或mfrom = b和mto = a」看起來像正常情況,其中第二個實際上就是你的例子。 –

回答

1

如果你只是想顯示兩條記錄,那麼你可以做一個自聯接象下面這樣:

SELECT table2.mfrom, table2.mto 
FROM table table1 INNER JOIN table table2 
ON (table1.mfrom = table2.mto AND table2.mfrom = table1.mto)