如何基于另外两个表组成表?

时间:2011-12-13 17:23:57

标签: sql

给出表格和查询:

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。

3 个答案:

答案 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

中验证