从SQL Server表中检索行,该表在列中具有相同的值

问题描述 投票:1回答:1

我有下表:

Vehicle_no  DEA_id      Name       location
--------------------------------------------
1030        T100024     xxxxx      Canada
1012        T103125     yyyyy      America
1045        T100024     xxxxx      Canada

我想检索第一行和具有相同经销商ID的行。对于上面的例子,我想得到的结果是row1和row3 ......

我怎么能在SQL Server中这样做?我尝试左连接与相同的表。但我没有像我预期的那样得到结果。

SELECT  *
FROM ODS.MKT_DEALER_GET AS t1
INNER JOIN
    (SELECT TOP 1 * 
     FROM ODS.MKT_DEALER_GET) AS t2 ON t.[DEA_id] = ts.[DEA_id]

请帮我解决这个问题。我的数据库是SQL Server

sql sql-server database join self-join
1个回答
1
投票

SQL表表示无序集。要识别“第一”行,您需要一个指定排序的列。我会用=而不是JOIN来写这个:

SELECT dg.*
FROM ODS.MKT_DEALER_GET dg
WHERE dg.DEA_id = (SELECT TOP 1 dg2.DEA_id
                   FROM ODS.MKT_DEALER_GET dg2
                   ORDER BY ?
                  );

或者,如果您有其他信息,请使用WHERE

SELECT dg.*
FROM ODS.MKT_DEALER_GET dg
WHERE dg.DEA_id = (SELECT TOP 1 dg2.DEA_id
                   FROM ODS.MKT_DEALER_GET dg2
                   WHERE Vehicle_no = 1030
                  );
© www.soinside.com 2019 - 2024. All rights reserved.