PostgreSQL中SELECT语句是否支持RETURNING子句?求替代方案
PostgreSQL SELECT语句中的RETURNING子句问题解答
嘿,咱们先看你给出的这条查询语句:
SELECT * FROM users WHERE user_id = '423423432r32' RETURNING name
1. 语句中是否存在RETURNING子句?
答案是肯定的——这条语句末尾的RETURNING name就是标准的PostgreSQL RETURNING子句,它的作用是让查询执行后返回匹配行的name列值。
不过这里要提一句:虽然PostgreSQL允许在SELECT语句中使用RETURNING子句,但它更多是为INSERT、UPDATE、DELETE这类修改数据的语句设计的,用来返回被改动的行信息。在SELECT场景下,它的效果和直接指定查询列其实是一致的。
2. 如果没有RETURNING子句,如何实现相同结果?
如果把语句里的RETURNING子句去掉(比如写成SELECT * FROM users WHERE user_id = '423423432r32'),要实现只获取name列的结果,最常规也最直接的替代方式就是直接在SELECT子句中指定要查询的列,而不是用*(星号代表查询所有列)。对应的语句如下:
SELECT name FROM users WHERE user_id = '423423432r32'
这样执行后,就会直接返回匹配行的name列数据,和原语句带RETURNING子句的效果完全一致。
内容的提问来源于stack exchange,提问作者Andrey Radkevich
相关产品推荐
相关产品推荐

