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

时间:2018-03-06 02:36:21

标签: sql sql-server database join self-join

我有下表:

Event.target

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

我如何在SQL Server中执行此操作?我尝试左连接与相同的表。但我没有按照我的预期得到结果。

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

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

1 个答案:

答案 0 :(得分: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
                  );