【发布时间】:2015-08-08 23:17:30
【问题描述】:
从这两个表
FirstTable
Number|
1 |
2 |
3 |
4 |
SecondTable
Id | Number | Column2 | Column3
--------------------------------
1 | 1 | text1 | text11
2 | 2 | text2 | text12
3 | 3 | text3 | text13
4 | 3 | text4 | text14
5 | 2 | text5 | text15
如何从第一个表中选择所有记录,并且只从第二个表中选择第一个匹配的记录,其中包含空值? 结果应该是这样的:
Result
Number | Column2 | Column3
--------------------------
1 | text1 | text11
2 | text2 | text12
3 | text3 | text13
4 | null | null
我试过了:
SELECT FT.Number, ST.Column2, ST.Column3
FROM FirstTable FT LEFT JOIN
SecondTable ST ON FT.Number =
(
SELECT TOP 1 S2.Number FROM SecondTable S2 WHERE S2.Number = FT.Number
)
或
SELECT min(FT.Number), ST.Column2, ST.Column3
FROM FirstTable FT LEFT JOIN
SecondTable ST ON FT.Number = ST.Number
GROUP BY ST.Column2, ST.Column3
【问题讨论】:
-
SecondTable 中是否有一列具有唯一值?
-
我编辑过,是的。
标签: sql sql-server