簡體   English   中英

告訴我sql

[英]tell me the sql

我有一張這樣的桌子。

表名:消息

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

我能夠顯示所有行

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

但如果mfrommtomtomfrom相等,我只想顯示一個結果。 例如mfrom =a and mto=bmfrom=b and mto=a 我只想像這樣顯示他們的一個結果

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

請告訴我查詢。

您的問題不清楚,因為您的“查詢”似乎是錯誤的(“mfrom 和 mto 或 mto 和 mfrom 相等”似乎不正確)。

然而,當您將表命名為“消息”時,我猜您想要每條消息一次,即使它在表中出現兩次。

您可以做的是從表中查詢“兩次”,然后使用較大的 ID:

SELECT first.* FROM message AS first LEFT JOIN message AS second 
    ON first.mfrom = second.mto AND first.mto = second.mfrom
    WHERE first.mid > second.mid OR second.mid is NULL;

這會給你你要求的結果。 它還會為您提供任何沒有“合作伙伴”行的消息。

如果您只想要匹配的消息,您可以刪除“OR second.mid is NULL”。

暫無
暫無

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

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