Mysql 显示用户id的最新状态

Mysql 显示用户id的最新状态,mysql,Mysql,我试图显示最新的用户状态,但由于某些原因,输出会一直显示所有用户 例如,这是我的桌子 employeeid | employee | status 123 | Don Smith | 0 123 | Don Smith | 1 这就是我想要得到的;唐·史密斯的最新状态 employeeid | employee | status 123 | Don Smith | 1 SELECT spe1.employeeid, spe1.employee,

我试图显示最新的用户状态,但由于某些原因,输出会一直显示所有用户

例如,这是我的桌子

employeeid | employee  | status
123        | Don Smith | 0
123        | Don Smith | 1
这就是我想要得到的;唐·史密斯的最新状态

employeeid | employee  | status
123        | Don Smith | 1


SELECT spe1.employeeid, spe1.employee, spe1.status 
FROM sp_employees spe1 
WHERE spe1.employeeid = (SELECT spe2.employeeid
                     FROM sp_employees spe2
                     WHERE spe1.employeeid = spe2.employeeid           
                     ORDER BY spe2.employeeid DESC
                     LIMIT 1)

employeeid
在这两个条目中是相等的,您的查询将选择具有此employeeid的所有用户,在本例中为所有用户

首先,您必须保持id的唯一性。您还可以使用
distinct
来避免同一用户的重复

请注意,您的
限制1
仅适用于返回请求的
员工ID
的内部查询


此外,如果您想更改用户的状态,请使用将更新状态值的
UPDATE
查询,而不是向表中添加新条目。

MySQL无法区分集合中哪一行是“最新的”。如果没有ORDER BY、MIN()或MAX()聚合,结果集中就没有“ORDER”的概念。MySQL可以返回满足谓词的任何行。该行需要包含MySQL可以用来确定它是否是“最新”行的信息。例如,添加DATETIME列,然后可以使用该列对行进行排序。它不是“太宽”。这是无法解决的-但在他们有一个按钮之前…请您帮助并提供一个使用distinct的示例,使用我的第一个表。因为你是对的,我想避免显示相同的用户,因为我只是想获取员工的最新状态。例如,单个用户可能有10个条目,所有条目的状态都相同0,因此我想显示,当用户状态更改为1时,我想显示1,然后当用户状态更改为0时,将显示0。有道理?