Sql 在子查询中使用IN子句。比较的列名不同
我有一个元素表和一个指定这些元素之间层次结构的表。 知道一个元素的别名,我想得到它的子元素的别名。 指定元素ID参数的列在两个表中具有不同的名称 元素表具有以下相关列: 类型\设备\设备类型代码 元素\对元素的标识符进行编码 元素\u别名元素的别名 层次结构表具有以下相关列: 父元素\u ID父元素的标识符 父元素类型父元素的设备类型 子元素\u ID子元素的标识符Sql 在子查询中使用IN子句。比较的列名不同,sql,subquery,in-clause,in-subquery,Sql,Subquery,In Clause,In Subquery,我有一个元素表和一个指定这些元素之间层次结构的表。 知道一个元素的别名,我想得到它的子元素的别名。 指定元素ID参数的列在两个表中具有不同的名称 元素表具有以下相关列: 类型\设备\设备类型代码 元素\对元素的标识符进行编码 元素\u别名元素的别名 层次结构表具有以下相关列: 父元素\u ID父元素的标识符 父元素类型父元素的设备类型 子元素\u ID子元素的标识符 元素代码和子元素ID是我要比较的列 我想要的是: 了解父别名及其类型,获取其子别名 下面是我尝试嵌套子查询的内容: SELECT
元素代码和子元素ID是我要比较的列 我想要的是: 了解父别名及其类型,获取其子别名 下面是我尝试嵌套子查询的内容:
SELECT ELEMENT_ALIAS
FROM TUN_ELEMENT
WHERE ELEMENT_CODE IN (
SELECT *
FROM J_ELEMENT_HIERARCHY
WHERE FATHER_ELEMENT_ID = (
SELECT ELEMENT_CODE
FROM TUN_ELEMENT
WHERE ELEMENT_ALIAS = 'C-09-27-SAE-CR-002' AND TYPE_EQUIP_CODE = 4
)
AND FATHER_ELEMENT_TYPE = 4)
子查询单独工作,但在运行所有子查询时出现以下错误:
只有一个特殊情况才能在次级结果列表中表达,不存在特殊情况。。错误116。SQLSTATE 42000。严重性16。MsgState 1。第11行
翻译的意思是:
如果未使用EXISTS指定子查询,则只能在选择列表中指定一个表达式
我想得到的是,子元素的别名:
元素别名
C-09-27-SAE-CR-002-D-11
C-09-27-SAE-CR-002-D-12
C-09-27-SAE-CR-002-D-13
这可以通过子查询完成,还是只能通过JOIN完成?您必须在子查询中只指定一列返回。 你可以找到更多。 要与元素代码进行比较的是元素别名还是父元素ID
元素代码和子元素ID是我要比较的列。只使用一列就行了。有没有一种方法可以对多列执行此操作?然后在上面的代码中替换为CHILD_ELEMENT_ID。
SELECT ELEMENT_ALIAS
FROM TUN_ELEMENT
WHERE ELEMENT_CODE IN (
SELECT <Column name here>
FROM J_ELEMENT_HIERARCHY
WHERE FATHER_ELEMENT_ID = (
SELECT ELEMENT_CODE
FROM TUN_ELEMENT
WHERE ELEMENT_ALIAS = 'C-09-27-SAE-CR-002' AND TYPE_EQUIP_CODE = 4
)
AND FATHER_ELEMENT_TYPE = 4)