我有一个视图和两个表。表1和表2具有相同的列,但表1具有少量记录,表2具有旧数据和大量记录。
我必须使用这两个表连接一个视图才能从表1中获取最新数据;如果表1中没有视图中的记录,那么我必须从表2中选择记录。
我如何通过MySQL实现这一目标?
我通过在互联网上做一些研究来了解我们无法在from子句中应用完全连接和子查询。
答案 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追加? ,或者您是从两个表创建视图?