MySQL查询-order by存在问题

MySQL查询-order by存在问题,sql,mysql,Sql,Mysql,我使用两个表来选择用户之间的消息。表“messages”用于记录消息,表“members”用于检查用户数据(它们是活动的还是删除的) 这个查询运行良好 我需要做的是按上次收到的信息列出已收到的信息。我试图在这个查询的末尾使用“orderbymessages.id DESC”,但没有成功。 将列出从第一次接收到的所有消息 这是我正在使用的mysql联接表查询: sql = "SELECT DISTINCT messages.fromid, messages.readed,

我使用两个表来选择用户之间的消息。表“messages”用于记录消息,表“members”用于检查用户数据(它们是活动的还是删除的)

这个查询运行良好

我需要做的是按上次收到的信息列出已收到的信息。我试图在这个查询的末尾使用“orderbymessages.id DESC”,但没有成功。 将列出从第一次接收到的所有消息

这是我正在使用的mysql联接表查询:

sql = "SELECT DISTINCT messages.fromid,
            messages.readed,
            messages.fromid,
            messages.toid  ,
            members.id AS pid
FROM            messages
INNER JOIN members
ON              members.id = messages.fromid
WHERE           messages.toid              =  ".$mid."
AND             members.status             = 7
AND             messages.kreaded          !='1'
AND             messages.subject          != 'readed'
GROUP BY        fromid"
有没有办法做到这一点


表中是否有“已接收”列或带有某种时间戳的列?如果你这样做了,你应该按这个顺序点菜


如果没有,请发布整个表结构,以便我们能更好地帮助您。

表中是否有“已接收”列或带有某种时间戳的列?如果你这样做了,你应该按这个顺序点菜


如果没有,请发布整个表格结构,以便我们能更好地帮助您。

像这样的东西怎么样

SELECT DISTINCT messages.fromid, 
            messages.readed, 
            messages.fromid, 
            messages.toid  , 
            members.id AS pid 
FROM            messages 
INNER JOIN members 
ON              members.id = messages.fromid 
WHERE           messages.toid              =  ".$mid." 
AND             members.status             = 7 
AND             messages.kreaded          !='1' 
AND             messages.subject          != 'readed'
ORDER BY    messages.fromid ASC,
            messages.id DESC

在messages.fromid ASC中,ASC纯粹是语法上的,如ORDER BY,而不指定ASC/DESC假定为ASC

SELECT *
FROM TABLE
ORDER BY COL ASC

SELECT *
FROM TABLE
ORDER BY COL

像这样的东西怎么样

SELECT DISTINCT messages.fromid, 
            messages.readed, 
            messages.fromid, 
            messages.toid  , 
            members.id AS pid 
FROM            messages 
INNER JOIN members 
ON              members.id = messages.fromid 
WHERE           messages.toid              =  ".$mid." 
AND             members.status             = 7 
AND             messages.kreaded          !='1' 
AND             messages.subject          != 'readed'
ORDER BY    messages.fromid ASC,
            messages.id DESC

在messages.fromid ASC中,ASC纯粹是语法上的,如ORDER BY,而不指定ASC/DESC假定为ASC

SELECT *
FROM TABLE
ORDER BY COL ASC

SELECT *
FROM TABLE
ORDER BY COL

我不是sql专家,当您尝试使用ORDERBY子句时,您是按messages.id排序还是使用您在语句中声明的别名“pid”?这可能会因为没有按预期工作而对订单产生影响吗?

我不是sql专家,当您尝试使用order by子句时,您是按messages.id订购的还是您在语句中声明的别名“pid”?这可能会因为未按预期工作而影响订单吗?

是的,有“sendtime”列,我尝试了“order by messages.sendtime DESC”,但没有任何更改。是否也选择了messages.sendtime?如果在查询中未选择它,则无法按它排序。我们需要查看您的确切查询和示例输出。只是说你试过了,但没用,这并不能解决问题。我们认为它应该能工作,所以我们需要看看它为什么不能工作。好的,这就是确切的查询:选择distinct messages.fromid,messages.id,messages.toid,messages.sendtime,messages.message,messages.subject,messages.id作为porid,members.id作为pid从messages内部加入members.id=messages.fromid其中messages.toid=$mid和members.status=7和messages.subject!='readed“GROUP BY fromid ORDER BY messages.fromid ASC,messages.sendtime DESC此查询的输出显示表中包含向用户toid发送消息的用户(GROUP BY fromid)。问题是,发送消息的用户名称下面列出的消息不是最后一条,而是第一条消息。是的,有“sendtime”列,我尝试了“ORDER BY messages.sendtime DESC”,但没有任何更改。是否也选择了messages.sendtime?如果在查询中未选择它,则无法按它排序。我们需要查看您的确切查询和示例输出。只是说你试过了,但没用,这并不能解决问题。我们认为它应该能工作,所以我们需要看看它为什么不能工作。好的,这就是确切的查询:选择distinct messages.fromid,messages.id,messages.toid,messages.sendtime,messages.message,messages.subject,messages.id作为porid,members.id作为pid从messages内部加入members.id=messages.fromid其中messages.toid=$mid和members.status=7和messages.subject!='readed“GROUP BY fromid ORDER BY messages.fromid ASC,messages.sendtime DESC此查询的输出显示表中包含向用户toid发送消息的用户(GROUP BY fromid)。问题是,发送消息的用户名称下面列出的消息不是最后一条,而是第一条消息。No。这两个我都试过了。它总是在顶部列出第一条信息。你知道你所说的几乎毫无意义。给我们看一些输入数据和扩展输出,也许我们可以看一下……不。这两个我都试过了。它总是在顶部列出第一条信息。你知道你所说的几乎毫无意义。给我们看一些输入数据和扩展的输出,也许我们可以看看。。。