Sql 在Sybase DB中获取Union子查询的语法错误
我们有一个包含以下数据的table ta_服务 参考id序列描述 2340 1服务1Sql 在Sybase DB中获取Union子查询的语法错误,sql,union,sybase,Sql,Union,Sybase,我们有一个包含以下数据的table ta_服务 参考id序列描述 2340 1服务1 2340 2报价1 2340 3服务2 2340 4报价2 2340 5服务3 2340 5服务4 我们需要获取提供服务的服务,除了Ref_id(外键)和seq(主键)列之外,我们没有获取此数据的任何参考 我们试图通过以下查询获取,但失败 SELECT * FROM ta_service WHERE Ref_id = 2340 AND seq IN ( SELECT seq-1 AS seq
2340 2报价1
2340 3服务2
2340 4报价2
2340 5服务3
2340 5服务4 我们需要获取提供服务的服务,除了Ref_id(外键)和seq(主键)列之外,我们没有获取此数据的任何参考 我们试图通过以下查询获取,但失败
SELECT * FROM ta_service
WHERE Ref_id = 2340 AND seq IN (
SELECT seq-1 AS seq
FROM ta_service
WHERE Ref_id = 2340
AND desc LIKE '%Offer%'
UNION
SELECT seq AS seq
FROM ta_service
WHERE Ref_id = 2340
AND desc LIKE '%Offer%'
ORDER BY seq)
我们正在使用sybase数据库。感谢任何帮助假设您使用的是ASE,您的
订购人
需要跳出子查询
从
•子查询不能在内部操纵其结果,即子查询不能包含order by子句、compute子句或into关键字
假设您使用的是ASE,您的
orderby
需要跳出子查询
从
•子查询不能在内部操纵其结果,即子查询不能包含order by子句、compute子句或into关键字
您应该按删除
订单,并将desc
括在“
中,因为它是关键字
SELECT * FROM ta_service
WHERE Ref_id = 2340
AND seq IN (
SELECT seq-1 AS seq
FROM ta_service
WHERE Ref_id = 2340
AND "desc" LIKE '%Offer%'
UNION
SELECT seq AS seq
FROM ta_service
WHERE Ref_id = 2340
AND "desc" LIKE '%Offer%'
)
您应该按
删除订单,并将desc
括在“
中,因为它是关键字
SELECT * FROM ta_service
WHERE Ref_id = 2340
AND seq IN (
SELECT seq-1 AS seq
FROM ta_service
WHERE Ref_id = 2340
AND "desc" LIKE '%Offer%'
UNION
SELECT seq AS seq
FROM ta_service
WHERE Ref_id = 2340
AND "desc" LIKE '%Offer%'
)
ASE在任何子查询中都不支持联合
您可以在任何子查询中引用ASE不支持UNION
您可以参考我刚才提到的12.5 SQL手册中的ASE不支持子查询中的UNION。在第5章第169页,它说“不能在子查询中包含for browse子句或union”。另一个答案是正确的,即使与智商有关。我本来会留下评论的,但我的帐户不允许这样做。ASE不支持子查询中的联合,正如我刚才提到的12.5 SQL手册所确认的那样。在第5章第169页,它说“不能在子查询中包含for browse子句或union”。另一个答案是正确的,即使与智商有关。我本想留下一条评论,但我的帐户不允许这样做。这里是sybase手册的链接,上面说子查询中不支持UNION:
但是我注意到,如果在派生表表达式中有union子句,那么它就可以正常工作。以下是指向sybase手册的链接,其中给出了查询的语法:
下面给出了失败和正常查询的示例:
模拟用例:从部门D1或D2中获取员工
查询失败:
SELECT empname from emp WHERE deptid IN
(SELECT deptid from dept WHERE deptid = "D1"
UNION
SELECT deptid from dept WHERE deptid = "D2")
Working query: With additional select and derived table based on union:
SELECT empname from emp WHERE deptid IN (
SELECT deptid FROM
(SELECT deptid from dept WHERE deptid = "D1"
UNION
SELECT deptid from dept WHERE deptid = "D2") derivedTable
)
以下是指向sybase手册的链接,其中指出子查询中不支持UNION:
但是我注意到,如果在派生表表达式中有union子句,那么它就可以正常工作。以下是指向sybase手册的链接,其中给出了查询的语法:
下面给出了失败和正常查询的示例:
模拟用例:从部门D1或D2中获取员工
查询失败:
SELECT empname from emp WHERE deptid IN
(SELECT deptid from dept WHERE deptid = "D1"
UNION
SELECT deptid from dept WHERE deptid = "D2")
Working query: With additional select and derived table based on union:
SELECT empname from emp WHERE deptid IN (
SELECT deptid FROM
(SELECT deptid from dept WHERE deptid = "D1"
UNION
SELECT deptid from dept WHERE deptid = "D2") derivedTable
)
Sybase是公司而不是数据库。您使用的是哪种Sybase DB产品?另外,请说明您在尝试运行命令时收到的错误消息。错误说明了什么?删除顺序。错误显示“解析器检测到语法错误。在SQL会话窗口的输入编辑器中用鼠标右键单击,或使用“窗口”菜单激活SQL会话,并将光标放置在错误位置。”Sybase是一个公司,而不是数据库。您使用的是哪种Sybase DB产品?另外,请说明您在尝试运行命令时收到的错误消息。错误说明了什么?按删除顺序。错误显示“解析器检测到语法错误。在SQL会话窗口的输入编辑器中用鼠标右键单击,或使用“窗口”菜单激活SQL会话,并将光标放置在错误位置。”即使删除ORDER BY子句,我也会收到相同的错误。即使删除ORDER BY子句,我也会收到相同的错误。您引用的文档不是针对ASE,而是针对Sybase IQ。您引用的文档不是针对ASE,而是针对Sybase IQ。