我有这个数据:
来自这里:
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/