sql - 获取子查询的第一行
问题描述
我有一张包含客户的表格,我需要显示每个客户的第一个国家/地区,例如默认国家/地区。
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
解决方案
您的子查询不相关,请尝试使用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;
推荐阅读
- java - 用于将“X-Document-Type: Workbook”转换为 Excel 的 Java 库
- mysql - Mysql中两个日期列之间的较早日期
- r - R package check() 警告:完整的检查需要'checkbashisms'脚本
- c++ - 空格后的字符没有被打印出来
- android - Flutter ImagePicker 错误“找不到属性 android:requestLegacyExternalStorage”
- r - 在 r 中运行多个逐步线性回归模型
- azure-ad-b2c - Microsoft InTune 是否适用于 Azure AD B2C
- google-sheets - Google表格中的条件格式冲突
- kubernetes - 在 Kubernetes 中,为什么 NodePort 的默认端口范围是 30000 - 32767?
- c# - 英雄联盟直播 API 使用