[英]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'];
}`
但如果mfrom
和mto
或mto
和mfrom
相等,我只想顯示一個結果。 例如mfrom =a
and mto=b
或mfrom=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.