有人能解释一下这个WHERE子句在这个查询中是如何工作的吗?
SELECT * FROM "User" AS U
WHERE ((U."ID", U."age") > (23820, 25));
据我所知,Postgres返回id大于23820的用户,并忽略年龄列.
有人能解释一下这个WHERE子句在这个查询中是如何工作的吗?
SELECT * FROM "User" AS U
WHERE ((U."ID", U."age") > (23820, 25));
据我所知,Postgres返回id大于23820的用户,并忽略年龄列.
@乔纳斯梅茨勒的 comments 是正确的.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)