簡體   English   中英

在同一個表上組合兩個SQL SELECT語句

[英]Combining two SQL SELECT statements on the same table

我想結合這兩個SQL查詢:

SELECT * FROM "Contracts" WHERE 
"productType" = 'RINsell' AND
"clearTime" IS NULL AND
"holdTime" IS NOT NULL 
 ORDER BY "generationTime";

SELECT * FROM "Contracts" WHERE 
"productType" = 'RINsell' AND
"clearTime" IS NULL AND
"holdTime" IS NULL 
 ORDER BY "contractLimitPrice";

當我運行每個語句時,我得到了我想要的結果,我只想順序地得到兩個結果。 我的第一個想法是使用UNION ALL,因為這些選擇將是不相交的,但我發現你不能在ORDER BY之后使用UNION 我搜索了很多,大多數人建議在UNION之后進行ORDER BY ,但每個查詢都有不同的ORDER BY條件。

如果你想在第二個結果之前得到第一個查詢的結果,你可以從where子句中刪除holdtime ,並使用order by like

order by
  case when holdTime is not null then 0 else 1 end, --first query comes first
  case when holdTime is not null --different orders for queries
       then generationTime
       else contractLimitPrice
  end

...但我發現你不能在ORDER BY之后使用UNION

嗯,你看起來不夠努力:

(
SELECT *
FROM   "Contracts"
WHERE  "productType" = 'RINsell'
AND    "clearTime" IS NULL
AND    "holdTime" IS NOT NULL 
ORDER  BY "generationTime"
)
UNION ALL
)
SELECT *
FROM   "Contracts"
WHERE  "productType" = 'RINsell'
AND    "clearTime" IS NULL
AND    "holdTime" IS NULL 
ORDER  BY "contractLimitPrice"
)

請注意括號。 每個文件:

ORDER BYLIMIT可以附加到子表達式中,如果它括在括號中。沒有括號,這些子句將被用於應用於UNION的結果,而不是它的右側輸入表達式。)

密切相關的答案:
對幾個查詢的結果進行求和,然后在SQL中找到前5個

旁白 :我真的會擺脫那些CaMeL案例標識符 使用Postgres中的全小寫法律標識符,您的生活將變得更加輕松。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM