首页 > 解决方案 > 获取子查询的第一行

问题描述

我有一张包含客户的表格,我需要显示每个客户的第一个国家/地区,例如默认国家/地区。

Table Clients
ID_Client | Name_Client
1         | Mike
2         | Jon
3         | Ben

Table Countries
ID_Country | ID_Client | Name_Country
1          | 1         | France
2          | 1         | USA
3          | 1         | England
4          | 2         | Portugal
5          | 2         | Spain
6          | 3         | Germany

我只想要每个国家的第一行。

Example:
Mike - France
Jon - Portugal
Ben - Germany

我试过了,但只重试了 1 行:

SELECT Name_Client, Name_Country
FROM Clients
WHERE ID_Client =
(SELECT TOP 1 ID_Client
From Countries
order by ID_Country)

Result: 
Mike | France

标签: sqlsql-server

解决方案


您的子查询不相关,请尝试使用APPLY

SELECT c.Name_Client, cn.Name_Country
FROM Clients C OUTER APPLY
     (SELECT TOP (1) cn.Name_Country
      From Countries CN
      WHERE cn.ID_Client = c.ID_Client
      ORDER BY cn.ID_Country
     ) cn;

推荐阅读