查询以仅选择第一条记录

时间:2019-12-02 14:13:42

标签: sql sql-server

在SQL Server中,如何从包含每个CustomerID的多个记录的表中仅选择第一条记录?

样本数据:

CustomerID | Name     | Email              | Phone
123        | Emiliano | emilaino@gmail.com | null
123        | null     | emi@gmail.com      | 334455667
123        | Emiliano | null               | 334455667
110        | Pippo    | pippo@gmail.com    | 3232312
110        | Pippo    | null               | 3232312
110        | Pippo    | pippo@gmail.com    | null

所需结果:

123 | Emiliano | emilaino@gmail.com | null
110 | Pippo    | pippo@gmail.com    | 3232312

4 个答案:

答案 0 :(得分:1)

这应该做。

select top (1) *
from [tablename]
where CustomerID = @customerID

P.S。根据您的示例,您可能需要重新考虑如何存储数据,尚不清楚哪一行是有效行。您可以在上面添加一个order by子句以根据电子邮件或名称对数据进行排序以获取正确的行

答案 1 :(得分:0)

如果您有一个标识顺序的身份列,则可以使用相关的子查询获取每个customerid的“第一条”记录:

select t.*
from t
where t.id = (select min(t2.id) from t t2 where t2.customerid = t.customerid);

答案 2 :(得分:0)

下面的查询将允许您从customerID中选择所有记录

SELECT *
FROM tableName
WHERE CustomerID = 1

答案 3 :(得分:0)

请参阅以下查询。您可以在SQL中使用Over

select *
from (
    select *
        , row_number() over (partition by CustomerID order by CustomerID) as Rownum 
    from table
) t
where t.CustomerID = yourcustomerid and t.Rownum = 1;