我有这些数据:
由此:
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列中存在重复数据,则只显示每个副本中的第一个数据,如上例所示。
答案 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)