给出表格和查询:
CREATE TABLE #samples1 (SampleID int, ValueA float)
CREATE TABLE #samples2 (SampleID int, ValueB float)
INSERT INTO #samples1 VALUES (2, 2.0), (3, 3.0), (4, 4.0)
INSERT INTO #samples2 VALUES (1, 1.5), (2, 2.5), (3, 3.5)
SELECT * FROM #samples1 FULL JOIN #samples2 ON #samples1.SampleID=#samples2.SampleID --??
DROP TABLE #samples1
DROP TABLE #samples2
如何合并它们?这个查询的结果并不完全是我需要的。我想合并两个表并保留在ValueA和ValueB上都有值的样本,但也只保留其中任何一个的样本。结果将包含样本ID 1,2,3和4。
答案 0 :(得分:0)
SELECT SampleID, ValueA
FROM #samples1
UNION ALL
select SampleID, ValueB
FROM #samples2
答案 1 :(得分:0)
如果您使用的是SQL Server 2008,则可以使用merge statement将一个表合并到另一个表中。
此语句提供了帮助您处理上述情况的案例,例如两个表都具有ID 2.所以您可以执行以下操作:
WHEN MATCHED THEN
<ignore the result>
WHEN NOT MATCHED THEN
<insert new record into table>
答案 2 :(得分:0)
SELECT A.SampleID, ValueA, ValueB FROM #samples1 A
LEFT JOIN #samples2 B ON A.SampleID=B.SampleID
UNION
SELECT A.SampleID, ValueA, ValueB FROM #samples2 A
LEFT JOIN #samples1 B ON A.SampleID=B.SampleID
在HERE
中验证