查询删除重复的行,但具有不同的列?

时间:2015-02-11 23:13:09

标签: mysql sql phpmyadmin

假设我有下表:

+---------+------------+----------------+------------+-----------+------------+-----------------+
| id      |   id_2     | title          | year       | overview  |   rating   |  link           |
+---------+------------+----------------+------------+-----------+------------+-----------------+
|  000001 |   23306    |  movie title 2 | 2008       | ......    |     1.0    |  ...            |
|  000002 |   23301    |  movie title 2 | 2008       | ......    |     1.0    |  ...            |
|  000003 |   24567    |  movie title 2 | 2000       | ......    |     1.0    |  ...            |
|  000004 |   20022    |  title 100     | 2006       | ......    |     1.0    |  ...            |

如您所见,以下情况属实:

  • 前三行具有相同的标题。
  • 虽然前两个具有相同的标题,但第三行具有不同的年份

我正在尝试构建一个查询,该查询将删除具有重复标题的行,但保留具有最高id_2个数字的行。另外,我想保留具有相同标题但行年不同的行。

到目前为止,我已经尝试过这个:

SELECT  DISTINCT id, id_2, title, year
FROM table
ORDER BY id_2

但那并没有奏效。有谁知道我应该怎么做这个查询?或者,如果我需要做多个以使其工作?抱歉复杂,但我对SQL知之甚少。谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用Group by

SELECT 
title
, year
, max(id_2) id_2
, max(id_1) id_1
from table 
group by title, year

你没有为id_1指定逻辑,所以我假设了重复集的最大值。