我有一个有 2 列的数据库。
PostTown | PostCode
每个 PostTown 我都有 100 个独特的 PostTown 我有数千个 PostCode
我想做的是说:
select distinct(PostTown), first(PostCode) from PostData
所以我只想要 PostTown 的第一个 PostCode,非常感谢任何帮助。
我有一个有 2 列的数据库。
PostTown | PostCode
每个 PostTown 我都有 100 个独特的 PostTown 我有数千个 PostCode
我想做的是说:
select distinct(PostTown), first(PostCode) from PostData
所以我只想要 PostTown 的第一个 PostCode,非常感谢任何帮助。
您没有定义“第一”,但这是一个好方法:
select postTown, min(PostCode)
from PostData
group by postTown
如果没有 Order By 字段,我不确定您能否保证获得第一条记录。您可以使用 Row_Number 尝试这样的事情:
SQL Server/甲骨文:
select
PostTown,
PostCode
from
(
select
PostTown,
PostCode,
Row_Number() OVER (Partition By PostTown ORDER BY (SELECT 1)) rn
from PostData
) t
where rn = 1
MySQL:
select
PostTown,
PostCode
from
(
select
@rn:=IF(@PrevPostTown=PostTown,@rn+1,1) rn,
PostTown,
PostCode,
@PrevPostTown:=PostTown
from PostData
order by PostTown
) t
where rn = 1
@GordonLinoff 提供了一种始终获取最小邮政编码的好方法。
如果您确实需要每个 PostTown 的第一个 PostCode,并且您有一个自动递增的 id 列,请尝试以下操作:
SELECT
PostTown,
PostCode,
FROM SomeTable sta
WHERE sta.id = (SELECT MIN(id) from SomeTable WHERE PostTown = sta.PostTown)
这是一个奇怪的结构,我不知道它的效率如何,但是当我为每个产品处理多个图像时,它为我提供了可靠的主图像。