如何將連接兩個表,從第二個表中只選擇第一行? 如何在SQL Server中將第一行左連接
我的問題是一個跟進:我使用的查詢 SQL Server: How to Join to first row 在該線程建議。
CREATE TABLE table1(
id INT NOT NULL
);
INSERT INTO table1(id) VALUES (1);
INSERT INTO table1(id) VALUES (2);
INSERT INTO table1(id) VALUES (3);
GO
CREATE TABLE table2(
id INT NOT NULL
, category VARCHAR(1)
);
INSERT INTO table2(id,category) VALUES (1,'A');
INSERT INTO table2(id,category) VALUES (1,'B');
INSERT INTO table2(id,category) VALUES (1,'C');
INSERT INTO table2(id,category) VALUES (3,'X');
INSERT INTO table2(id,category) VALUES (3,'Y');
GO
------------------
SELECT
table1.*
,FirstMatch.category
FROM table1
CROSS APPLY (
SELECT TOP 1
table2.id
,table2.category
FROM table2
WHERE table1.id = table2.id
ORDER BY id
)
AS FirstMatch
但是,通過此查詢,我得到了內連接結果。我想要獲得左側加入結果。所需結果中的tabel1.id應該具有NULL的「2」。怎麼做?
變化CROSS應用到OU TER APPLY – 2015-04-03 09:06:59
@ t-clausen.dk爲什麼你的大代表人在評論中放棄了答案,而不是在答案中?然後像我這樣的小代表可以將其標記爲爲其他用戶所接受。謝謝,效果很好! – 2015-04-03 09:11:59