sql - SQL:不支持选择 * - 从子查询中获取列名
问题描述
Showcase 是我使用的平台的供应商,它由位于我们数据库顶部的 Showcase 服务器和DB2
用于降低DB2
自身性能影响的中间层组成。Showcase Query 是他们的客户端应用程序和查询接口。它不支持Select *
,我有数百个依赖于 *. 希望改用子查询:
Select (select COLUMN_NAME from sysibm.columns where TABLE_NAME='sometable')
From 'sometable'
然而,这会返回"Result of SELECT more than one row"
。我需要将此代码重用于不同宽度的表,因此我不想通过索引指定列,任何帮助将不胜感激。
解决方案
选择时,您必须为所有(在每个 DB AFAIK 中)指定列名或 *。
除了最简单的表之外,这可能会为所有表生成多于一行的错误。因为在 sometable 中有不止一列。
select COLUMN_NAME from sysibm.columns where TABLE_NAME='sometable'
要解决此问题,您必须向 where 子句添加更多条件
select (
select COLUMN_NAME from sysibm.columns where TABLE_NAME='sometable' and column_name = 'PARTS'
)
from sometable.
推荐阅读
- powershell - 使用 cmd 命令从 after effects callsystem 调用 powershell 快速访问 Windows (os) 中的文件夹取消固定
- python - 根据组中的一行更新组中的列值
- yii2 - 使用 Yii kartik 文件输入更新表单时无法删除选定的图像
- vb.net - “已被隐藏”是什么意思?
- reactjs - ReactJs 屏幕重新渲染
- android - 如何以编程方式在 android studio 中打印包含徽标和表格的 PDF 文件
- python - Python在特定字符串后的URL中查找字符串
- python - 更新 dynamodb 映射中的键值,其中键有空格
- python - Matplotlib X 轴绘制错误的日期标签
- javascript - Reactjs改变Quizcard onClick的背景