如何通过从三个表中查找值来联接两个表?

时间:2018-12-17 17:32:16

标签: sql sql-server tsql sql-server-2012 union

我想从3个表中创建一个新表:

  1. table1是源表
  2. table2是tabl1的子集,除了多一列
  3. table3具有不同的列。

所有这些表都通过ID列进行链接。

我知道我需要一个垂直联接(UNION)。

查询:

  1. 我需要联接table2中的所有记录,并从table2.field1中查找值,并从table1中获取记录集,其中table2中的field1在table1.id中。
  2. 我需要对table3进行子集化,其中table3.date> ='2010-10-01'并使用table3.id从table1中获取记录集,其中table3.id = table1.id

如何使用UNION联接从table1查找值并保留table2中的所有记录?

1 个答案:

答案 0 :(得分:1)

您可以使用:

--CREATE VIEW my_view AS 
SELECT sub.id, sub.col1, sub.col2, table3.col1, ...
-- INTO #temp_table -- alternatively
FROM (SELECT id,col1, col2, ... -- only common column list, drag and drop from
      FROM table1               -- object explorer
      UNION 
      SELECT id, col1, col2, ...
      FROM table2) sub
JOIN table3 ON table3.id = sub.id 
WHERE table3.date >= '2010-10-01'