如果第一个

时间:2015-05-26 17:57:16

标签: mysql mysql-workbench mysqldump

我有一个视图和两个表。表1和表2具有相同的列,但表1具有少量记录,表2具有旧数据和大量记录。

我必须使用这两个表连接一个视图才能从表1中获取最新数据;如果表1中没有视图中的记录,那么我必须从表2中选择记录。

我如何通过MySQL实现这一目标?

我通过在互联网上做一些研究来了解我们无法在from子句中应用完全连接和子查询。

3 个答案:

答案 0 :(得分:1)

只需对结果进行简单的UNION,不包括table1中已经提到的记录:

SELECT * FROM table1
UNION
SELECT * FROM table2
WHERE NOT EXISTS (SELECT * FROM table1 WHERE table2.id = table1.id)

答案 1 :(得分:0)

像这样。

SELECT *
FROM   view1 V
       INNER JOIN (SELECT COALESCE(a.commoncol, b.commoncol) AS commoncol
                   FROM   table1 A
                          FULL OUTER JOIN table2 B
                                       ON A.commoncol = B.commoncol) C
               ON v.viewcol = c.commoncol 

如果您使用的是Mysql,请点击此处模拟 Full Outer Join in MySQL

答案 2 :(得分:0)

您是否尝试从两个表更新视图,其中视图中的旧记录需要被table1中的最新/更新记录覆盖,而table1中的非现有记录将从table2追加? ,或者您是从两个表创建视图?