想象一下......一个人将关于计算机的一行数据添加到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
它没有按照我的预期执行 - 日期不是最新的。
答案 0 :(得分: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
查询,这样您就不会有重复项,如果您不关心历史记录条目。
答案 1 :(得分: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)
但如果一个日期的同一台计算机有两个或更多条目,则可能会出现一些问题。