有人可以解釋這個WHERE子句在這個查詢中是如何作業的嗎?
SELECT * FROM "User" AS U
WHERE ((U."ID", U."age") > (23820, 25));
據我了解,Postgres 回傳 id 大于 23820 的用戶并忽略年齡列。
uj5u.com熱心網友回復:
@JonasMetzler 的評論是正確的。Postgres 顯然將此集合用作以下內容:
Most left parameter uses the operator, all the others use equal
OR
repeat until one parameter left (
Remove most left parameter
Most left parameter uses the operator, all the others use equal
)
(parameter_n, [parameter_n-1, ..., parameter_n-final]) <operator> (value_n, [value_n-1, ..., value_n-final])
equals to
(parameter_n = value_n AND parameter_n-1 = value_n-1 AND ... parameter_n-final <operator> value_n-final)
OR
(parameter_n = value_n AND parameter_n-1 = value_n-1 AND ... parameter_n-final-1 <operator> value_n-final-1)
OR
...
(parameter_n = value_n AND parameter_n-1 <operator> value_n-1)
OR
(parameter_n <operator> value_n)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/463046.html
標籤:sql PostgreSQL
