[英]Ordering with id for a distinct column
我創建了一個具有私人消息傳遞功能的社交網站。 當一個用戶發送私人消息時,數據將以以下格式插入名為“ pm”的表中,默認值為read = 0。
_________________________________
| id | sender | receiver | text | time | read |
+++++++++++++++++++++++++++++++++
| 1 | A | B | abc | x | 0 |
| 2 | B | A | abc | y | 1 |
| 3 | A | C | abc | z | 0 |
| 4 | C | B | abc | a | 1 |
| 5 | B | A | abc | b | 0 |
| 6 | A | D | abc | c | 0 |
| 7 | D | A | abc | d | 1 |
| 8 | A | B | abc | e | 0 |
"""""""""""""""""""""""""""""""""""""""""""""""""""""""""""
我已經使用下面的mysql代碼來列出與用戶A進行私人消息的用戶。
SELECT DISTINCT sender from pm where receiver='A'
UNION
SELECT DISTINCT receiver from pm where sender='A'
這段代碼可以正常工作,但我實際上想按降序對id為的數據進行排序,以便最新的發件人將顯示在列表的頂部,依此類推。
我通過id desc使用ORDER,但返回UNKNOWN COLUMN id。
注意:“ id”列是主鍵。
希望任何人都能解決這個問題。
問候。
試試這個代碼。
SELECT distinct sender from ((SELECT DISTINCT pm.id,pm.sender from pm where receiver='A')
UNION
(SELECT DISTINCT pm.id,pm.receiver from pm where sender='A')
order by id desc) as abc
select sender,receiver from ((SELECT DISTINCT pm.id,pm.sender from pm where receiver='A'
UNION
SELECT DISTINCT pm.id,pm.receiver from pm where sender='A')) as abc ORDER BY pm.id;
嘗試這個...
如果發送方和接收方的用戶名都是唯一的,則可以執行以下操作:
SELECT COALESCE(t1.id, t2.id) as UserId, UserName FROM
(
SELECT DISTINCT sender as UserName from pm where receiver='A'
UNION
SELECT DISTINCT receiver as UserName from pm where sender='A'
) tbl
INNER JOIN pm t1
ON tbl.UserName = t1.Sender
INNER JOIN pm t2
ON tlb.UserName = t2.Receiver
ORDER BY id
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.