gpt4 book ai didi

MySQL MAX Date - 单连接表 - 仅选择第一个 fkUserId 匹配

转载 作者:行者123 更新时间:2023-11-29 23:05:01 27 4
gpt4 key购买 nike

简单连接表 -

CREATE TABLE tbluserstomaintasks  (
fkUserId INT(6),
fkMainTaskId INT(6),
UpdateTimestamp TIMESTAMP
);

INSERT INTO tbluserstomaintasks (fkUserId, fkMainTaskId, UpdateTimestamp) VALUES (1, 1, '2015-02-03 16:40:00');
INSERT INTO tbluserstomaintasks (fkUserId, fkMainTaskId, UpdateTimestamp) VALUES (1, 2, '2015-02-03 16:47:00');
INSERT INTO tbluserstomaintasks (fkUserId, fkMainTaskId, UpdateTimestamp) VALUES (1, 2, '2015-02-03 16:53:00');
INSERT INTO tbluserstomaintasks (fkUserId, fkMainTaskId, UpdateTimestamp) VALUES (2, 1, '2015-02-03 17:01:00');

SQL SELECT 查询某个特定 fkUserId 的最新 UpdateTimestamp

SELECT  p2.fkUserId, p2.fkMainTaskId, p2.UpdateTimestamp
FROM tbluserstomaintasks AS p2
INNER JOIN
(SELECT fkUserId, fkMainTaskId, MAX(UpdateTimestamp) AS Value
FROM tbluserstomaintasks
GROUP BY fkUserId)
AS p1
ON p1.fkUserId = p2.fkUserId AND p1.Value = p2.UpdateTimestamp
WHERE p2.fkUserId = 1

结果

fkUserID fkMainTaskId 更新时间戳1 2 2015-02-03 16:53:00

我正在寻找包含两条记录的结果集,一条记录的 fkMainTaskId = 1 (UpdateTimestamp = 2015-02-03 16:40:00),另一条记录的 fkMainTaskId = 2 (UpdateTimestamp = 2015-02-03 16) :53:00)。

尝试#2:将“WHERE fkUserId=1”移至内部 SELECT,结果与尝试 #1 相同。

尝试#3:从外部 SELECT (p1.fkUserId = p2.fkUserId) 中删除了第一个 ON 子句,结果与尝试 #1 相同。

最佳答案

此查询应该适合您。您希望每个用户和任务 ID 各一行,并包含每个用户和任务 ID 的最大时间戳。

SELECT  p2.fkUserId, p2.fkMainTaskId, MAX(p2.UpdateTimestamp)
FROM tbluserstomaintasks AS p2
WHERE p2.fkUserId = 1
GROUP BY p2.fkUserId, p2.fkMainTaskId

关于MySQL MAX Date - 单连接表 - 仅选择第一个 fkUserId 匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28328266/

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