我的一些疑問從MySQL轉移到PostgreSQL和我難倒如何重寫以下查詢PostgreSQL中的工作: SUM(phoneid IN (1, 2, 6, 8)) AS completedcalls
MySQL到PostgreSQL查詢重寫使用「IN」?
我本來以爲我可以只是做SUM(SELECT phoneid FROM myTable WHERE phoneid = 1 OR phoneid = 2
等等等等,但我不相信你可以在一個總和中有一個SELECT。
我也嘗試使用WITH
查詢,但沒有運氣讓工作。
我花了一段時間才能找出爲什麼這個工作,所以可能是值得的解釋: (1,2,6,8)中的phoneid計算爲一個布爾值;如果它是'true',則'或'快捷鍵,並給出'true';如果它是'false',則你有'false或null',其結果爲'null';最後'count()'只計算非空元素,即那些計算爲真的元素。我從來不知道你可以用'或'來做到這一點。 – IMSoP
@IMSoP很好的解釋,但我不確定'true'時的'或'快捷方式,或者它評估所有表達式並應用[真值表](http://www.postgresql.org/docs/current/static /functions-logical.html) –
這絕對是「最少鍵入」的解決方案。 – 2013-07-29 13:51:09