使用子选择选择 FROM 表并修改生成的表名
Posted
技术标签:
【中文标题】使用子选择选择 FROM 表并修改生成的表名【英文标题】:SELECT the FROM table with a sub select and modify the resulting table name 【发布时间】:2017-02-14 12:56:05 【问题描述】:我有以下 两个 无法更改的表格。
1:数据类型
+----------------------+-----------------------+
| datatypename(String) | datatypetable(String) |
+----------------------+-----------------------+
示例数据:
+-----------+------------+
| CycleTime | datalong |
+-----------+------------+
| InjTime1 | datadouble |
+-----------+------------+
2:datalong_1(数据模型在这里无关紧要)
我现在想进行一个查询,从 datatypes 表中读取 datatypetable 属性,将String
"_1
" 添加到其中并从中选择所有内容。
从编程的角度来看,我想象它看起来类似于这个显然还行不通的语句:
SELECT * FROM
(SELECT datatypetable FROM datatypes WHERE datatypename = 'CycleTime') + '_1'
如何使用 HSQLDB 在 SQL 中实现这一点?
感谢 Leonidas199x,我现在知道如何进入 '_1'
,但我如何告诉 FROM
语句子选择不是我要从中读取的新表,而是我想要读取的现有表的名称想读。
SELECT * FROM
(SELECT RTRIM(datatypetable)+'_1' FROM datatypes WHERE datatypename = 'CycleTime')
根据这个与我相同的问题,这是不可能的:
using subquery instead of the tablename
:(
【问题讨论】:
请Edit您的问题和基于您的样本数据的预期输出。 Formatted text 请no screen shots 另外:SQL 中的字符串连接运算符是||
而不是 +
- HSQLDB 允许使用非标准的 +
,但最好坚持使用标准。
【参考方案1】:
您能更详细地解释一下您的数据模型吗?我不确定我是否完全理解你想要做什么。 如果您想将 _1 添加到“数据类型名称”,您可以使用:
SELECT datatypename+'_1'
FROM datatypes
【讨论】:
基本上只有一张表,它保存着哪个table-Prefix存储特定数据类型的信息(即表Nr1)。然后可能有数百个表以前缀开头并以“_”和标识符结尾,所以“_1”。我给出了一个名为“datalong_1”的表的示例。总共存在 4 个前缀,每个数据类型(long、int、double、String)一个。现在,如果我想知道哪个表存储了标识符 1 的 CycleTime 信息,我必须从数据类型表中提取前缀并向其添加后缀“_1”以上是关于使用子选择选择 FROM 表并修改生成的表名的主要内容,如果未能解决你的问题,请参考以下文章