SQL中的列名重复

时间:2016-01-23 22:58:11

标签: sql alias

我想在我的sql中创建一个视图,但我一直在收到此错误:

  

重复列名称' product_id'

这是我的疑问:

CREATE VIEW product_view AS

SELECT
    *
FROM
    products
    JOIN storeitems on products.product_id = storeitems.product_id;

我相信创建一个别名可以解决问题,但后来我不知道该怎么做。我希望你能帮助我。谢谢!

4 个答案:

答案 0 :(得分:3)

是的,创建列别名可以解决问题,就像

一样
select column1 as test_column

但如果这是您的原始查询,那么我怀疑您是否因为从名为products的单个表中进行选择而未能获得此错误,显然同一个表格不会有多个具有相同名称的列。

无论如何,您可以将查询修改为

CREATE VIEW product_view AS
SELECT p.product_id as product_product_id, 
si.product_id as storeItem_product_id
FROM
    products p
    JOIN storeitems si on p.product_id = si.product_id;

答案 1 :(得分:3)

您收到错误,因为查询中的两个表都有一个名为product_name的列,并且所选列名必须是唯一的。

你可以像这样制作别名:

CREATE VIEW product_view AS SELECT p.product_name, si.product_name StoreItemsProductName -- continue with what you want to select...
FROM products p JOIN storeitems si
on p.product_id=si.product_id;

答案 2 :(得分:2)

products表和storeitems表可能都有一个名为product_name的列。

CREATE VIEW product_view AS SELECT * FROM products p JOIN storeitems si on p.product_id=si.product_id;

此处p将成为products表的别名,si将成为storeitems表的别名

答案 3 :(得分:0)

如果您的数据库支持using子句,您只有一个重复的列名,那么您可以这样做:

select *
from products p join
     storeitems si
     using (product_id);

但总的来说,我认为最好列出视图中的列。如果其中一个基础表更改了列的顺序或名称,则更安全。