You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

SQL中能否创建包含重复列的VIEW视图?

结论

你写的SQL语法本身合法,在PostgreSQL、Oracle、SQL Server等绝大多数支持标准SQL的数据库中都能成功执行创建视图,但完全达不到你「创建原表完全匹配副本」的预期目标。

详细说明
  • 语法合法性验证:这条语句执行后生成的VIEWNAME视图会包含两列,一列是原表的ID字段,另一列是ID字段复制后重命名的ID2字段。唯一需要注意的是你给ID2加了双引号,在支持标准SQL标识符规则的数据库中,这会强制列名大小写敏感,后续查询必须严格引用大写的"ID2"才能匹配到该列,否则会报列不存在的错误。
  • 为什么不符合你的需求:
    • 首先CREATE VIEW创建的是视图,不是实体表副本。视图只是一段预存的查询逻辑,本身不独立存储数据,查询视图时本质还是在查原表,原表数据变动视图结果会同步变,原表被删除视图会直接失效,完全没有副本的独立性。
    • 其次你的查询语句只选了ID这一个字段,原表的其他所有字段都不会出现在视图里,根本不可能做到和原表完全匹配。
对应需求的正确写法

如果要创建独立存储数据的实体表副本,包含原表全部字段,同时额外加上复制重命名的ID2列,用建表查询语法即可:

CREATE TABLE NEW_TABLENAME AS
SELECT *, ID AS ID2
FROM TABLENAME;

如果你实际要的就是视图,只是想让视图包含原表所有字段外加ID2列,补全查询字段就行:

CREATE VIEW VIEWNAME AS
SELECT *, ID AS ID2
FROM TABLENAME;

内容的提问来源于stack exchange,提问作者qwertz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 05:09:33