mysql - 如果有重复数据,只加载一个数据

标签 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 列中有重复数据,则仅显示每个重复项中的第一个数据,如上例所示。

最佳答案

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 列重新创建表,这样您确实有一个指定顺序的唯一列。

您可以做的下一个最好的事情是使用聚合查询:

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

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

关于mysql - 如果有重复数据,只加载一个数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50206084/

相关文章:

php - 检查表记录是否存在于 codeigniter 中?

mysql - 如何将以下 MySQL 模式转换为 CouchDB?

php - 更新mysql错误

php - 当 Wilson 分数间隔相等时,MYSQL 使用 UploadDate 对下一行进行排序

mysql - 使用 Memcache 设置 MySQL 5.6 失败且没有错误

mysql - 在.NET中获取MySQL数据时出错

mysql - bash中返回变量的问题

php - php 中的 mysql.connect_timeout 与 mysql 中的 connect_timeout

android - 在android中搜索长列表

mysql - 在 mysql 的 django 模型中,当对 int(1) 使用 IntegerField 时我们会丢失信息吗