0

有一个表结构:

ID1 (int), ID2 (int), AddedAt (datetime)

其中ID1ID2是主键。现在该表已包含多达300,000条记录,我需要重组该表以具有1-1关系。这意味着我需要将ID1从主键中删除,并仅将 ID2 设为主键,但有些记录已经包含每个ID1的多个ID2

现在,在我这样做之前,我需要进行查询以选择存在多个ID2的所有记录并删除它们,只需要留下一条记录 ID2 并且该记录必须是由AdditionalAt 日期时间列确定的最新记录。

这是我到目前为止所拥有的:

 SELECT *, COUNT(*) AS Total
 FROM TestTable
 GROUP BY ID2
 HAVING Total > 1

这成功返回了所有记录,但AdditionalBy并不是最新的。我需要在此查询中添加什么以获取 Grouped By ID2 的最新记录只有 1,以便我可以使 ID2 成为主键。

如果这不能在 MySQL 中完成,可以在 PHP 中完成吗?

4

1 回答 1

0

这成功返回了所有记录,但 AdditionalBy 并不是最新的。

大多数 SQL 方言禁止选择不属于 GROUPing 的列值——MySQL 允许这样做(取决于服务器设置),但从随机行中为这些列提供一个值。

你想要的是持有某列的分组最大值的行

于 2013-03-25T14:31:02.420 回答