SQL中的列名重复
我想在我的sql中创建一个视图,但出现了以下错误: 重复的列名“product\u id” 我的问题是:SQL中的列名重复,sql,alias,Sql,Alias,我想在我的sql中创建一个视图,但出现了以下错误: 重复的列名“product\u id” 我的问题是: CREATE VIEW product_view AS SELECT * FROM products JOIN storeitems on products.product_id = storeitems.product_id; 我相信创建别名可以解决这个问题,但我不知道怎么做。我希望你能帮我做这件事。谢谢 是的,创建列别名可以解决问题,您可以这样做 select
CREATE VIEW product_view AS
SELECT
*
FROM
products
JOIN storeitems on products.product_id = storeitems.product_id;
我相信创建别名可以解决这个问题,但我不知道怎么做。我希望你能帮我做这件事。谢谢 是的,创建列别名可以解决问题,您可以这样做
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;
可能
products
表和storeitems
表都有一个名为product\u name
的列
CREATE VIEW product_view AS SELECT * FROM products p JOIN storeitems si on p.product_id=si.product_id;
此处,
p
将是产品
表的别名,si
将是存储项表的别名。如果您的数据库支持使用
子句,并且您只有一个重复的列名,则可以执行以下操作:
select *
from products p join
storeitems si
using (product_id);
不过,总的来说,我认为最好在视图中列出列。如果某个基础表更改了列的顺序或名称,则更安全。您会收到错误,因为查询中的两个表都有一个名为product\u 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;
如果为表提供别名,可能不需要为每一列提供别名,并且可以保留通配符SELECT*
I尝试在@sirnino执行此查询,但仍然会出现相同的错误。在这种情况下,我真的必须为每个列提供别名吗?您使用的是哪个DB?我真的必须选择表中的每个字段吗?我不能只使用通配符*?我强烈建议您在视图的SELECT中“拼写”每个字段,这样当涉及的表发生变化时它就不会发生变化。在这种情况下,您没有其他选择。或者,您可以选择p.*,然后“拼出”第二个表的列,但您需要拼出列以给它们一个别名。