簡體   English   中英

按ID排序以區分列

[英]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.

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