我正在尝试编写一个只从我的聊天系统中提取唯一消息的mysql语句。 有一个to_id和一个from_id。我想从每个对话中拉一行。Mysql语句从两列中选择不同的行
问题是如果存在与 to_id = 1 from_id = 2 一排并用 另一行to_id = 2 from_id = 1 我想要这两个行被视为是相同的。
我想到的陈述是“SELECT * FROM chat_messages GROUP BY to_id,from_id”。除了我上面提到的情况之外,这是有效的。
我做的另一个尝试是使用“SELECT DISTINCT最少(to_id,from_id)作为value1,最大(to_id,from_id)作为来自chat_messages的值2”。
这将返回我需要什么,但我不知道如何从类似消息的行,时间戳等,只给我弄的其余信息值1 &值2这是to_id & from_id。
@ hunijkah:我的回答可能需要一张纸条。示例查询依赖于GROUP BY行为的特定于MySQL的扩展。如果启用了'ONLY_FULL_GROUP_BY' SQL模式,该语句将在MySQL中返回一个错误。对这种形式的查询会在MySQL以外的RDBMS(例如SQL Server,Oracle,Teradata,DB2等)中返回一个错误。 – spencer7593 2014-11-04 03:06:52
这很好,但是如何命令它返回最近的行。我已经尝试过使用id desc命令,但它总是返回最低的编号 – 2015-03-04 13:05:23
我想知道同样的情况,如何排序最新的编号? – Arda 2015-10-08 17:01:16