7

私はこのクエリを実行する必要があります:

SELECT *
FROM tbl_member
WHERE (member_type==1 AND member_status==1)
   OR (member_type==2 and member_status==2)

私はもう試した:

q=session.query(tbl_member) \
  .filter(or_(and_(tbl_member.member_type==1,tbl_member.member_status==1), \
              and_(tbl_member.member_type==2,tbl_member.member_status==2)))

q=session.query(tbl_member) \ 
  .filter(or_((and_(tbl_member.member_type==1,tbl_member.member_status==1)), \
              (and_(tbl_member.member_type==2,tbl_member.member_status==2))))

クエリSQLはまだ次のようになっています:

SELECT *
FROM tbl_member
WHERE member_type==1 AND member_status==1 OR member_type==2 AND member_status==2

どうすればいいですか?

4

1 に答える 1

7

ANDよりも優先されるため、クエリは意味的に同じです。ORしたがって
WHERE Cond1 AND Cond2 OR Cond3 AND Cond4、と同じ結果が生成され
WHERE (Cond1 AND Cond2) OR (Cond3 AND Cond4)ます。

or_逆の方法(スイッチとコード内)を試してみると、括弧が生成されるand_ことに気付くでしょう。sqlalchemy

于 2013-03-05T08:05:18.207 に答える