0

想象一下……一个人将关于计算机的一行数据添加到 mysql 中,然后他再次添加另一行基本相同的数据行,只是日期不同,每个日期总是带有插入标记。

我希望能够消除重复并仅显示最近的行。

假设我们有一个包含 3 个字段的“计算机”表:ID、COMPUTER、DATEADD

桌子里面是这样的

1, dell, 2010-10-09
2, dell, 2011-10-10
3, gateway, 2010-03-03
4, dell, 2010-02-02

简单,好的...我如何摆脱戴尔的重复,只获得最新日期的戴尔?

我试过这个查询:

 SELECT * 
  FROM  `computers` 
  GROUP BY computer
  ORDER BY dates ASC 

它没有像我预期的那样执行 - 日期不是最新的。

4

2 回答 2

0

根据评论修改

SELECT * FROM
computers
INNER JOIN
(SELECT computer, MAX(dates) as dates
FROM computers
GROUP BY computer) AS max_dates ON computers.computer = max_dates.computer AND computers.dates = max_dates.dates

或者您可以更改表结构以在计算机字段上具有唯一索引,然后只需将所有数据插入作为REPLACE INTO查询,这样您就不会有重复项,如果您不关心条目历史记录。

于 2012-11-07T23:30:56.270 回答
0

使用DESC代替ASC

SELECT * 
FROM  `computers` 
GROUP BY computer
ORDER BY dateadd DESC;

更新 1

另一个镜头:

SELECT *
  FROM computers c
 WHERE dateadd = (SELECT MAX(dateadd) 
                    FROM computers 
                   WHERE computer = c.computer)

但是,如果您在同一台计算机上有两个或多个条目,则可能会出现一些问题。

于 2012-11-08T01:12:36.197 回答