2017-08-29 110 views
0
query="SELECT a.id, b.id 
     FROM tab_a a, tab_b b 
     WHERE a.ref = b.ref 
     AND a.amount = -b.amount 
     AND NOT a.tot AND NOT b.tot 
     AND a.a_id = %(a_id)s AND b.a_id = %(a_id)s 
     {p_id_condition} 
     ORDER BY a.date desc" 

我試圖如何使用情況下,當在SQL查詢

首先嚐試匹配裁判,但如果沒有一雙發現,嘗試

+2

什麼?這個查詢在做什麼,哪個RDBMS? – sagi

+0

如何在WHERE子句中使用「OR」? – waka

+0

您的查詢是否正確執行?你想如何使用'case',或者你的意思是完全不同?請說明。 – HoneyBadger

回答

1

將東西匹配量這樣的工作:

SELECT 
    a.id, 
    b.id 
FROM tab_a a 
INNER JOIN tab_b b 
    ON a.ref = b.ref OR 
     a.amount = -b.amount 
WHERE 
    NOT a.tot AND 
    NOT b.tot AND 
    a.a_id = %(a_id)s AND 
    b.a_id = %(a_id)s 
    {p_id_condition} 
ORDER BY a.date DESC 

我使用顯式連接語法重寫了您的查詢,該語法隔離並顯示了您在問題中提到的兩個連接條件。然後,我改變了和,或者,這似乎是你想要的。

+0

@sagi將連接條件更改爲兩個條件之間的「OR」,並重構爲使用顯式連接。 –

+0

哦,我錯過了:D,但我不確定那是他需要的。壞問題。 – sagi

+0

不好的答案,但不要downvote我,downvote這個問題!哦,到底是什麼,也讓我失望! –

相關問題