如何缩短多次使用同一表达式的postgresql查询?

u4dcyp6a  于 2021-07-26  发布在  Java
关注(0)|答案(2)|浏览(333)

我想缩短这个postgresql查询,这样我就不需要重复多次“coalesce(gl.email,mc.email)。。。

select r.*,l.*, coalesce(r.email, l.email) 
from righttable r full outer join  lefttable l on r.email=l.email 
where coalesce(r.email, l.email) > 'h' 
order by coalesce(r.email, l.email) limit 10
3b6akqbq

3b6akqbq1#

你可以加入一个 using 条款:

select *
from righttable r 
full outer join  lefttable l using(email)
where email > 'h' 
order by email 
limit 10

根据文件:
这个 USING 子句是一种简写形式,它允许您利用联接的两个边对联接列使用相同名称的特定情况。
此外,输出 JOIN USING 抑制冗余列:不需要打印两个匹配的列,因为它们必须具有相等的值。而 JOIN ON 从生成所有列 T1 后面是来自的所有列 T2 , JOIN USING 为每个列出的列对(按列出的顺序)生成一个输出列,后跟 T1 ,后跟 T2 .

uelo1irk

uelo1irk2#

这是对我有效的解决方案。。。
我连续重复这个select查询。

select r.<field1>, r.<field2>, ..., l.<field1>, l.<field2>,...,coalesce(r.email, l.email) from righttable r full outer join  lefttable l on r.email=l.email where coalesce(r.email, l.email) > <last_read_email_address> order by coalesce(r.email, l.email) limit 10

在每个连续的请求中,我将last\u read\u email\u address的值设置为上一个结果集中的最终合并电子邮件地址。
很简单。

相关问题