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

时间:2013-03-03 16:24:28

标签: mysql sql join view

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

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

这给了我错误:

  

重复列名'tID'

有没有办法连接两个表而不列出要选择的所有值?

3 个答案:

答案 0 :(得分:3)

这两个表包含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 

答案 1 :(得分:0)

您需要指定列名而不是使用*,然后像这样对列进行别名:

SELECT h.tId, b.tId as BTId

你不能两次使用相同的名字 - 因此你的错误就在上面。

答案 2 :(得分:0)

试试这个:

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;