Mysql 使用SQL查询从表中选择数据

Mysql 使用SQL查询从表中选择数据,mysql,sql,Mysql,Sql,我有一个表名“chat_details”,我只想根据时间访问带有绿色下划线的数据,我使用以下查询 //suppose $user_id = 1; "SELECT * FROM chat_details WHERE from_user_id='$user_id' OR to_user_id='$user_id' ORDER BY time DESC" 它获取所有的行,因为所有的行在其中一列中都包含user_id=1,但我只需要绿色下划线行,而红色下划线行是因为绿色下划线是最新的,根据时间(列

我有一个表名“chat_details”,我只想根据时间访问带有绿色下划线的数据,我使用以下查询

//suppose $user_id = 1;

"SELECT * 
FROM chat_details WHERE from_user_id='$user_id' OR to_user_id='$user_id' ORDER BY time DESC"

它获取所有的行,因为所有的行在其中一列中都包含user_id=1,但我只需要绿色下划线行,而红色下划线行是因为绿色下划线是最新的,根据时间(列),我如何才能仅获取这些绿色下划线?

这是一个可行的查询,应该可以解决您的问题

  SELECT * 
  FROM chat_details c 
  WHERE (c.from_user_id='$user_id' OR c.to_user_id='$user_id') 
  AND NOT EXISTS (
        SELECT 1 FROM chat_details d 
        WHERE d.from_user_id = c.from_user_id 
        AND d.to_user_id = c.to_user_id 
        AND d.time > c.time)
  ORDER BY c.time DESC"
实际上我不能测试,希望我没有犯错误

查询选择查询中的所有数据,但仅选择两个用户之间没有更新聊天记录的数据。
对于EXISTS关键字,请参见

您的意思,仅获取“最上面的一个”。根据什么指标排名第一?选择行的标准是什么?根据时间(列),你说“根据时间”,但你有11-13、11-26,中间有一整圈。我真搞不懂你是怎么找到绿色下划线的。你能帮我们做些样品吗?