假设我有包含以下数据的视图
Name Image
---- ----------
A Image1
A Image2
A Image3
B Image4
B Image5
现在我想要的是为每个名字只选择一行,这与我想要的结果无关,例如:
Name Image
---- ----------
A Image1
B Image4
另一种情况可能更接近我需要的是如果我们采用销售产品的网站,每个产品有多个图像如何只选择一个图像作为封面显示(让我们说第一个)。我使用了Distinct但它不起作用,因为每一行都有不同的图像。
谢谢,
拉沙
答案 0 :(得分:2)
对于您问题中的数据,可以执行简单的聚合:
select name, min(image)
from t
group by name
如果您有多列且想要同一个表中的所有行:
select t.*
from (select t.*,
row_number() over (partition by name order by newid()) as seqnum
from t
) t
where seqnum = 1;
row_number()
函数为具有相同名称的所有行分配序号。 order by newid()
进行随机排序。