我想在我的sql中创建一个视图,但我一直在收到此错误:
重复列名称' product_id'
这是我的疑问:
CREATE VIEW product_view AS
SELECT
*
FROM
products
JOIN storeitems on products.product_id = storeitems.product_id;
我相信创建一个别名可以解决问题,但后来我不知道该怎么做。我希望你能帮助我。谢谢!
答案 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);
但总的来说,我认为最好列出视图中的列。如果其中一个基础表更改了列的顺序或名称,则更安全。