gpt4 book ai didi

php - 选择字段中最后一行的条件为真

转载 作者:行者123 更新时间:2023-12-04 07:16:00 25 4
gpt4 key购买 nike

我只需要获取最后一条消息(对于每个聊天)来自“用户”的聊天 ID,并忽略最后一条消息来自“支持”的聊天,但我不明白逻辑:
表聊天

ID  |  DateStart
-----------------
1 | 2020-01-01
-----------------
2 | 2020-02-01
-----------------
3 | 2020-03-01
表消息
ID  | CHATID  | FROM_U   | MESSAGE  |  DATE    |
---------------------------------------------
1 | 1 | user | hi... | 2020-01-01 10:00:00
---------------------------------------------
2 | 1 | support| response | 2020-01-01 12:00:00
---------------------------------------------
3 | 1 | user | response2| 2020-01-01 12:10:00
---------------------------------------------
4 | 2 | support| hi.... | 2020-02-01 09:00:00
---------------------------------------------
5 | 2 | user | test... | 2020-02-01 09:10:00
---------------------------------------------
6 | 2 | support| test... | 2020-02-01 09:20:00
---------------------------------------------
7 | 3 | support| hi.... | 2020-03-01 09:00:00
---------------------------------------------
8 | 3 | user | test... | 2020-03-01 09:10:00
因此,在我的示例中,我只需要检索聊天 ID:1 和 3 导致最后一条消息(基于 DATE)是由“用户”编写的
我需要在 php 中执行此操作,以便可以拆分为多个查询,但我想知道是否可以在一个简单的唯一查询中执行此操作。
我正在考虑这样的查询:
SELECT CHATID, FROM_U, MAX(DATE) FROM MESSAGES GROUP BY CHATID HAVING FROM_U = 'user'
但它没有按预期工作

最佳答案

请试试这个。

-- MySQL(v5.8)
SELECT t.CHATID
FROM (SELECT CHATID
, FROM_U
, DATE
, ROW_NUMBER() OVER (PARTITION BY CHATID ORDER BY DATE DESC) row_num
FROM MESSAGES ) t
WHERE t.row_num = 1
AND t.FROM_U = 'user';
备用查询
-- MySQL(v5.7)
SELECT m.CHATID
FROM MESSAGES m
INNER JOIN (SELECT CHATID
, MAX(DATE) max_date
FROM MESSAGES
GROUP BY CHATID) t
ON m.CHATID = t.CHATID
AND m.DATE = t.max_date
AND m.FROM_U = 'user';

关于php - 选择字段中最后一行的条件为真,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68756782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com