mysql - 如果存在重复数据,则仅加载一个数据

时间:2018-05-07 01:41:30

标签: mysql

我有这些数据:

由此:

TDNO        location

12345       New York
12345       San Jose
56789       San Francisco
56789       New Jersey
90390       Las Vegas

对此:

TDNO        Location

12345       New York
56789       San Francisco
90390       Las Vegas

我如何实现这一结果?如果TDNO列中存在重复数据,则只显示每个副本中的第一个数据,如上例所示。

2 个答案:

答案 0 :(得分:2)

SQL表代表无序集。没有第一个"第一个"行,除非列包含该信息。您没有在问题中指定此类列,但如果您有一列,则查询将如下所示:

select t.*
from t
where t.created_at = (select min(t2.created_at) from t t2 where t2.tdno = t.tdno);

为了便于说明,我编写了列名created_at

如果您没有这样的列,也许您可​​以使用auto_increment列重新创建表格,这样就会有一个唯一的列来指定排序。< / p>

您可以做的下一件事是使用聚合查询:

select tdno, min(location)
from t
group by tdno;

这将按字母顺序返回第一个值。这与&#34; first&#34;完全不同。值(对于&#34;第一个&#34;的大多数定义),但每个tdno确实返回一行。

答案 1 :(得分:1)

  1. 使列成为唯一键。
  2. 插入时使用ON DUPLICATE UPDATE