簡體   English   中英

postgres-保留查詢中的重復項

[英]postgres - retain duplicates from query

基於我們將數據與Postgres數組匹配的方式,我剛在代碼中遇到一個錯誤。

這是問題所在:

在數據庫中,我們有一個surcharge列,該列位於appointment表中,其中存儲了附加到約會的所有附加費的ID。 在某些情況下,附加費可能會增加兩次,因此在數據庫中看起來像{1,1}

我正在使用類似以下的簡單查詢來檢索與已附加到約會的附加費相關聯的附加費數據:

SELECT s.* FROM surcharge s, appointment a WHERE s.id = ANY(a.surcharges);

不幸的是,我沒有測試這種情況,其中存在多個相同的附加費。 結果是只返回了1條記錄,而不是我真正需要的2條記錄。

為了闡明這一點,一個示例是帶有約會的appointment.surcharges = {1,1} ,我實際上希望能夠從surcharges TWICE中檢索記錄,因為它有兩個與之相關的附加費用。 然后,我使用這些記錄來創建與約會相關的與計費相關的交易。

所有這些,有沒有一種簡單的方法允許查詢返回我需要的重復項?

我可以在代碼中處理這種情況,但是最好運行一個簡單的查詢來處理這種情況。

我正在運行Postgres 9.5。

先感謝您!

我認為,簡單地將內部加入未加附加費的表格應會給您您想要的東西:

SELECT s.*
FROM surcharge s
INNER JOIN
(
    SELECT UNNEST(surcharges) AS surcharges
    FROM appointment
) a
    ON s.id = a.surcharges;

暫無
暫無

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

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