2010-05-30 31 views
0

下面的第一個工作,但是,只是想看看是否有更好的方法...postgres語法問題的OR?

如果我試圖找到所有以'C'開頭的記錄,標誌爲2或狀態9,我是否需要兩次納入'C'標準?

"SELECT * FROM mytable WHERE name like 'C%' AND flag = 2 OR name like 'C%' AND status = 9" 

或者說,是有辦法更快地寫出來,這樣我只需要設置「C%」一次呢?

回答

1

從邏輯上講,ANDOR是分配給對方,即

a & (b | c) = (a & b) | (a & c) 

,這意味着你的條件可以改寫爲

name LIKE 'C%' AND (flag = 2 OR status = 9) 
+0

哦,太棒了...謝謝。 – Dashiell0415 2010-05-30 14:53:42

1

或具有比優先級較低,所以你需要括號。

WHERE名稱,比如 「C%」 AND(標誌= 2或標誌= 9)

您還可以檢查一組值

的會員... AND標誌(1,9 )