繁体   English   中英

在子查询中使用 EXCEPT 关键字

[英]Usage of EXCEPT keyword in subquery

我必须确定一组要从表中删除的行,这是我用来确定要删除的范围的逻辑。

我有 2 个表 AAA 和 BBB 使用 Sybase ASE。

AAA 有 2 列:日期、标签和价格 BBB 有 3 列:日期和标签

我使用以下查询来确定 AAA 中但不在 B 中的日期

SELECT DATE1 FROM AAA WHERE LABEL='toto' GROUP BY DATE1
EXCEPT
SELECT DATE1 FROM BBB WHERE LABEL='toto'

我想重复使用上面的查询来确定要从 AAA 中删除的行的范围

我想运行如下所示的东西:

SELECT *
FROM AAA
WHERE LABEL='TOTO'
AND DATE1 in (
     (SELECT DATE1 FROM AAA WHERE LABEL='toto' GROUP BY DATE1)
     EXCEPT
     (SELECT DATE1 FROM BBB WHERE LABEL='toto'))

运行此查询引发了以下错误:

关键字“EXCEPT”附近的语法不正确。 [SQL State=ZZZZZ,DB Errorcode=156] 接下来:')' 附近的语法不正确。 [SQL 状态=42000,数据库错误代码=102]

我已经确定了错误到底是什么。

因此我的问题是:

  • 有人可以帮我找出错误吗?
  • 我的想法是否适合执行我想要的操作?
  • 如果没有,您能否分享最佳实践?

谢谢 !

运行此查询引发了以下错误:

关键字“EXCEPT”附近的语法不正确。 [SQL State=ZZZZZ,DB Errorcode=156] 接下来:')' 附近的语法不正确。 [SQL 状态=42000,数据库错误代码=102]

也许像这样?

SELECT *
FROM AAA
WHERE LABEL='TOTO'
AND DATE1 in (
     SELECT DATE1 FROM AAA WHERE LABEL='toto' 
     EXCEPT
     SELECT DATE1 FROM BBB WHERE LABEL='toto')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM