如何在加入两个 table 时从第二个 table 获取前 1 行:SQL Server 2014
How to get the top 1 row from second table while joining two tables : SQL Server 2014
我是 SQL Server 2014 的新手。我正在尝试通过连接从两个 table 获取数据。
在第二个 table 中,同一个 Header ID 有多个值。我想从第二个 table:
中获取 TOP 1
行值
我要按以下格式取数据
我想为第一个 table 中的所有名字拍摄 TOP 1 图片。
谁能帮我解决这个问题?
您可以使用 cross apply
。条件有点不清楚,不过思路是:
select t1.*, t2.images
from table1 t1 cross apply
(select top (1) t2.*
from t2
where t2.? = t1.id
) t2;
我推测相关条件应该使用 t2.h_id
或 t2.id
。
这是你要找的吗
WITH T1 AS
(
SELECT 1 ID,
'Anto' Name,
'Manager' Position
UNION
SELECT 2,
'Nick',
'CEO'
)
, T2 AS
(
SELECT 1 ID,
1 H_ID,
'URL1' Images
UNION
SELECT 2,
1,
'URL2'
UNION
SELECT 3,
1,
'URL3'
)
SELECT *
FROM T1 CROSS JOIN (SELECT TOP 1 Images FROM T2 ORDER BY ID) TT
或
SELECT TOP 1
T1.*,
T2.Images
FROM T1 INNER JOIN T2
ON T1.ID = T2.H_ID
ORDER BY T2.ID;
试试这个
SELECT *
FROM T1, T2
WHERE T1.ID = T2.H_ID
AND NOT EXISTS(
SELECT *
FROM T2 as T2BIS -- just an alias table
WHERE T2BIS.H_ID = T1.ID -- usual join
AND T2.ID > T2BIS.ID --change operator to take the last instead of the first
)
这是一个通用的解决方案,您可以在许多情况下使用,当您根据 where 条件和 EXISTS / NOT EXISTS 子句调整子查询时,只是两个相同空间之间的比较,您定义条件。
- 第一件事...
- 某事的最后...
- 一切高于...
- 等...
我是 SQL Server 2014 的新手。我正在尝试通过连接从两个 table 获取数据。
在第二个 table 中,同一个 Header ID 有多个值。我想从第二个 table:
中获取TOP 1
行值
我要按以下格式取数据
我想为第一个 table 中的所有名字拍摄 TOP 1 图片。
谁能帮我解决这个问题?
您可以使用 cross apply
。条件有点不清楚,不过思路是:
select t1.*, t2.images
from table1 t1 cross apply
(select top (1) t2.*
from t2
where t2.? = t1.id
) t2;
我推测相关条件应该使用 t2.h_id
或 t2.id
。
这是你要找的吗
WITH T1 AS
(
SELECT 1 ID,
'Anto' Name,
'Manager' Position
UNION
SELECT 2,
'Nick',
'CEO'
)
, T2 AS
(
SELECT 1 ID,
1 H_ID,
'URL1' Images
UNION
SELECT 2,
1,
'URL2'
UNION
SELECT 3,
1,
'URL3'
)
SELECT *
FROM T1 CROSS JOIN (SELECT TOP 1 Images FROM T2 ORDER BY ID) TT
或
SELECT TOP 1
T1.*,
T2.Images
FROM T1 INNER JOIN T2
ON T1.ID = T2.H_ID
ORDER BY T2.ID;
试试这个
SELECT *
FROM T1, T2
WHERE T1.ID = T2.H_ID
AND NOT EXISTS(
SELECT *
FROM T2 as T2BIS -- just an alias table
WHERE T2BIS.H_ID = T1.ID -- usual join
AND T2.ID > T2BIS.ID --change operator to take the last instead of the first
)
这是一个通用的解决方案,您可以在许多情况下使用,当您根据 where 条件和 EXISTS / NOT EXISTS 子句调整子查询时,只是两个相同空间之间的比较,您定义条件。
- 第一件事...
- 某事的最后...
- 一切高于...
- 等...