簡體   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