我面臨一個 SQL 請求問題。我不是 SQL 專家,我想了解我的錯誤。我的用例是獲取第一個表的所有記錄 第二個表中不存在于第一個表中的記錄。我有兩張這樣的桌子:
第一張表“T-Finance par jalon ZOHO”(有 20 列):
Num_Affaire, Nom_Jalon, Montant, ...
21021287,APD,3000
21021287,APS,5000
21021287,DCE,10000
第二張表“T-Finance par jalon EVERWIN”(有 20 列):
Num_Affaire_GX, Phase_GX, Montant_GX, ...
21021287,APS,5000
21021287,DCE,10000
21021287,ACT,50000
想要的結果是:
Num_Affaire, Phase, Montant, ...
21021287,APD,3000
21021287,APS,5000
21021287,DCE,10000
21021287,ACT,50000
所以我想一個完整的外部連接是解決方案,但我不知道為什么它不能像出席的那樣作業。我嘗試了很多東西,但記錄(21021287,ACT,50000)永遠不會出現在最終結果中。
這是我嘗試過的請求之一:
SELECT *
FROM "T-Finance par jalon ZOHO" AS zoho
FULL OUTER JOIN "T-Finance par jalon EVERWIN" gx ON gx.Num_Affaire_GX = zoho.Num_Affaire
AND gx.Phase_GX = zoho.Nom_Jalon
WHERE is_startswith(zoho.Nom_Jalon, 'Validation - ') = 0
我也嘗試使用 UNION 并且它可以作業,但問題是我不知道如何獲取每行的所有其他資訊(列)。因為如果我將其他列添加到 SELECT 陳述句中,UNION 將不會檢測到重復項:
SELECT
min(mix.Num_Ligne),
mix.Num_Affaire,
mix.Phase
FROM ( SELECT
zoho.Num_Ligne as Num_Ligne,
to_string(zoho.Num_Affaire) as Num_Affaire,
to_string(zoho.Nom_Jalon) as Phase
FROM "T-Finance par jalon ZOHO" AS zoho
UNION
SELECT
gx.Num_Ligne_GX as Num_Ligne,
to_string(gx.Num_Affaire_GX) as Num_Affaire,
to_string(gx.Phase_GX) as Phase
FROM "T-Finance par jalon EVERWIN" gx
) mix
WHERE is_startswith(mix.Phase, 'Validation - ') = 0
GROUP BY 2,
3
謝謝你的幫助。
uj5u.com熱心網友回復:
Num_Ligne我假設您想要找到匹配行時的最小值。完全加入版本,前提是您的 DBMS 支持least. 否則,您可以使用 CASE 運算式來完成。
SELECT coalesce(gx.Num_Affaire_GX, zoho.Num_Affaire) Num_Affaire
, coalesce(gx.Phase_GX, zoho.Nom_Jalon) Phase
, least(gx.Num_Ligne, zoho.Num_Ligne) Num_Ligne
FROM "T-Finance par jalon ZOHO" AS zoho
FULL OUTER JOIN "T-Finance par jalon EVERWIN" gx ON gx.Num_Affaire_GX = zoho.Num_Affaire
AND gx.Phase_GX = zoho.Nom_Jalon
WHERE is_startswith(coalesce(gx.Phase_GX, zoho.Nom_Jalon), 'Validation - ') = 0
uj5u.com熱心網友回復:
假設如下:
- 兩個表都有完全相同的列
- 僅保證整行的唯一性(即沒有主鍵)
- 每個表中的每一行都是唯一的,重復只存在于行中
您唯一的選擇是子查詢與DISTINCT.
SELECT DISTINCT * FROM (
SELECT * FROM "T-Finance par jalon ZOHO"
UNION
SELECT * FROM "T-Finance par jalon EVERWIN"
) tbl
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/422005.html
標籤:
