oracle - ORA-00918: 列定义不明确 - INSERT INTO 表
问题描述
请帮我解决这个错误,我花了几个小时在这上面。
也许问题出在突出显示的那些字段上(在图像上),因为当我删除它时,代码就可以工作了。
我检查好列名以确保没有输入错误。
这是桌子设计:
这是我的命令文本:
INSERT INTO PRODUCTS(
idz,category_id,brand_id,
namez,
computed_name,
unit_price,discount,
url_key,
short_description,
rate_avg,
rate_total,
rate_avg_recent,
rate_total_recent,
rate_total_counting,
rate_avg_counting,
views,
views_recent,
views_counting,
purchases,
purchases_recent,
purchases_counting,
search_recent,
search_counting
)
WITH recs AS (
SELECT 52333193, 1811, 111461,
'Tai nghe bluetooth không dây F9 True wireless Dock Sạc có Led Báo Pin Kép',
'Tai nghe bluetooth không dây F9 True wireless Dock Sạc có Led Báo Pin Kép',
169000,581000,
'tai-nghe-bluetooth-khong-day-f9-true-wireless-cam-ung-van-tay-dock-sac-co-led-bao-pin-kep-p52333193/52333193',
'\n \n\n\n\n\n\n \nSử dụng Chip Bluetooth 5.0 mạnh mẽ',
0,0,0,0,0,0,0,0,0,0,0,0,0,0 -- I think the problem is here, It work when I remove this line (and
-- columns defined above )
FROM dual
)
SELECT * FROM recs
谢谢各位!!
解决方案
我认为问题在于 Oracle 根据其值为子查询中的每一列设置了默认别名。由于您有多个具有相同值的列,因此它们会获得相同的别名,这会导致SELECT *
生成错误。
这会产生相同的错误:
with recs as (select 1,2,3,0,0,0 from dual) select * from recs;
但是为具有相同值的列提供明确的唯一别名是可行的:
with recs as (select 1,2,3,0 as a, 0 as b, 0 as c from dual) select * from recs
推荐阅读
- javascript - 如何使用来自 json 对象的数据填充“多选”?
- gradle - 当我的应用程序依赖于依赖于不同 micronaut 版本的库时,找不到匹配的 micronaut-bom 变体
- intellij-idea - 有没有办法用 Brew 安装旧版本的 IntelliJ?
- flutter - 在 Android 移动应用中实现多个过滤器的简单方法
- python - ValueError:linprog 的输入无效
- python - 工作目录未配置 Visual Studio 2019
- docker - 在 docker 中设置 zeppelin 而不使用内置图像
- java - Java Grpc:使 dns 缓存无效
- reactjs - 在 ReactJS 中的两个功能组件之间访问数据
- scala - Spark读取CSV,回车后跟文本字段中的新行