MySQL创建视图连接两个完整的表

Posted

技术标签:

【中文标题】MySQL创建视图连接两个完整的表【英文标题】:MySQL create view joining two whole tables 【发布时间】:2013-03-03 16:24:27 【问题描述】:

如何创建一个视图来合并来自两个不同表的所有不同列。

CREATE VIEW listView 
AS 
SELECT * FROM tab1 h LEFT JOIN tab2 b 
ON h.tID=b.tID 
WHERE value = 0

这给了我错误:

重复的列名“tID”

有没有办法在不列出所有要选择的值的情况下连接两个表?

【问题讨论】:

【参考方案1】:

这两个表包含列tID。为了编译VIEW,您需要在该列上创建一个别名,或者只指定一个tid 和它将来自的表。

一个解决方案:

SELECT  h.TID, -- and not specifying b.TID
FROM    tab1 h LEFT JOIN tab2 b ON h.tID=b.tID 

另一种解决方案:提供别名,

SELECT  h.TID as H_TID,
        b.TID as B_TID
FROM    tab1 h LEFT JOIN tab2 b ON h.tID=b.tID 

【讨论】:

我使用 h.* 从一个表中选择所有列,然后为第二个表中的列选择别名【参考方案2】:

试试这个:

CREATE VIEW listView 
AS 
SELECT
  a.tID as a_tID,
  b.tID as b_tID,
  a.anothercolumn as a_anothercolumn,
  b.anothercolumn as b_anothercolumn
FROM tab1 a
JOIN tab2 b ON a.tID=b.tID 
WHERE a.value = 0;

【讨论】:

【参考方案3】:

您需要指定列名而不是使用 *,然后像这样为您的列设置别名:

SELECT h.tId, b.tId as BTId

您不能两次使用相同的名称 - 因此出现上述错误。

【讨论】:

以上是关于MySQL创建视图连接两个完整的表的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MySQL 中使用不相关的表创建视图

关于mysql视图的问题。见补充

mysql多表查询并创建视图

Mysql创建一个链接两个表的视图

Mysql中的视图

从mysql自引用表和另一个表创建视图