SQL 中的重复列名

Duplicate column name in SQL

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

Duplicate column name 'product_id'

这是我的查询:

CREATE VIEW product_view AS

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

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

是的,创建列别名可以解决问题,您可以这样做

select column1 as test_column

但如果这是您的原始查询,那么我怀疑您不会收到此错误,因为您是从名为 products 的单个 table 中进行选择,显然相同的 table 不会有具有相同名称的多个列。

无论如何你可以修改你的查询像

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;

可能 products table 和 storeitems table 都有一个名为 product_name.

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

此处 p 将是 products table 的别名,而 si 将是 storeitems table[= 的别名18=]

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

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

不过,总的来说,我认为最好在视图中列出列。如果其中一个基础表更改了列的顺序或名称,那么这会更安全。

您收到错误是因为查询中的两个表都有一个名为 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;