Mysql 从联接表中选择每组最新数据的步骤

Mysql 从联接表中选择每组最新数据的步骤,mysql,sql,Mysql,Sql,我必须从两个表中选择数据,查询如下 SELECT accounts.firstname, accounts.mobileno, accounts.address, todotasks.lastmodified FROM accounts JOIN todotasks ON accounts.imeino = todotasks.assignedto WHERE status = 'Completed' 现在,我希望从表中显示最新修改的时间。您可以使用ORDER BY ToToToTask

我必须从两个表中选择数据,查询如下

SELECT
   accounts.firstname, accounts.mobileno, accounts.address, todotasks.lastmodified
FROM accounts
JOIN todotasks ON accounts.imeino = todotasks.assignedto
WHERE status = 'Completed'
现在,我希望从表中显示最新修改的时间。

您可以使用ORDER BY ToToToTasks.lastmodified DESC-


在我看来,你只是想按帐户分组。鉴于我们无法使用您的完整表架构,以下是最佳猜测:

SELECT
   accounts.firstname, accounts.mobileno, accounts.address, max(todotasks.lastmodified)
FROM accounts
JOIN todotasks ON accounts.imeino = todotasks.assignedto
WHERE status = 'Completed'
GROUP BY accounts.imeino
这里的假设是,每个帐户的imeino都是唯一的,并且每个唯一的imeino的名字、mobileno和地址都不会改变。

您只需将数据分组,并使用MAX函数选择最新日期,如下所示:

SELECT a.firstname, a.mobileno, a.address, MAX(t.lastmodified) AS lastmodified
FROM accounts a
JOIN todotasks t ON a.imeino = t.assignedto
WHERE status = 'Completed'
GROUP BY a.firstname, a.mobileno, a.address
编辑:


你能详细说明一下吗?那就不要用利米托克。。知道了。。更新。一个例子会让你更容易理解正确答案被否决不正确接受???@用户,不清楚。答案不满足你的问题吗?你能详细说明你的评论吗?@User,你想检查最近的记录是否已完成状态吗?@User,你能给我看一下吗?现在还不清楚今天完工意味着什么。你能用一些示例数据来编辑你的问题,解释你需要什么吗?@User而不是MAXt.lastmodified选择所需日期,即现在。这将显示08/06@User,因为在某些情况下,新流程将再次启动,这正是我想要的。这是一个重要的信息。好的,我会让你知道我什么时候会完成
SELECT a.firstname, a.mobileno, a.address, MAX(t.lastmodified) AS lastmodified
FROM accounts a
JOIN todotasks t ON a.imeino = t.assignedto
WHERE status = 'Completed'
GROUP BY a.firstname, a.mobileno, a.address
SELECT a.firstname, a.mobileno, a.address, MAX(t1.lastmodified) AS lastmodified
FROM accounts a
JOIN todotasks t1 ON a.imeino = t1.assignedto
WHERE status = 'Completed' AND 
      NOT EXISTS(SELECT * FROM todotasks t2 WHERE t2.assignedto = t1.assignedto AND
                                                  t2.status <> 'Completed' AND
                                                  t2.lastmodified > t1.lastmodified 
                                                --AND t2.TaskNo = t1.TaskNo)
GROUP BY a.firstname, a.mobileno, a.address