2017-08-29 107 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这个问题!哦,到底是什么,也让我失望! –

相关问题