01
07
31
29
为了账号安全,请及时绑定邮箱和手机立即绑定

请问如何在PostgreSQL查询中声明变量

请问如何在PostgreSQL查询中声明变量

小怪兽爱吃肉 2019-10-20 12:08:16
如何在PostgreSQL查询中声明变量如何声明变量以便在PostgreSQL 8.3查询中使用?在MSSQLServer中,我可以这样做:DECLARE @myvar INTSET @myvar = 5SELECT *FROM somewhereWHERE something = @myvar如何在PostgreSQL中实现相同的操作?根据文档,变量被简单地声明为“name type;”,但是这给了我一个语法错误:myvar INTEGER;有人能给我举个正确语法的例子吗?

3 回答

?
侃侃无极

TA贡献2051条经验 获得超10个赞

PostgreSQL中没有这样的特性。只能在pl/PgSQL(或其他pl/*)中执行,但不能在普通SQL中执行。

例外是WITH ()可以作为变量工作的查询,甚至可以用作变量的查询。tuple变量。它允许您返回一个临时值表。

WITH master_user AS (
    SELECT
      login,
      registration_date    FROM users    WHERE ...)SELECT *FROM usersWHERE master_login = (SELECT login                      
      FROM master_user)
      AND (SELECT registration_date           FROM master_user) > ...;



查看完整回答
反对 回复 2019-10-21
?
慕工程0101907

TA贡献1887条经验 获得超5个赞

通过使用WITH条款,它一点也不雅致,但也能做到同样的事情。不过,对于这个例子来说,这确实是过火了。我也不特别推荐这个。

WITH myconstants (var1, var2) as (
   values (5, 'foo'))SELECT *FROM somewhere, myconstantsWHERE something = var1   OR something_else = var


查看完整回答
反对 回复 2019-10-21
?
杨__羊羊

TA贡献1943条经验 获得超7个赞

您也可以在PLPGSQL中尝试这样做:

DO $$DECLARE myvar integer;BEGIN
    SELECT 5 INTO myvar;

    DROP TABLE IF EXISTS tmp_table;
    CREATE TABLE tmp_table AS
    SELECT * FROM yourtable WHERE   id = myvar;END $$;SELECT * FROM tmp_table;

以上要求Postgres 9.0或更高版本。



查看完整回答
反对 回复 2019-10-21

添加回答

代码语言

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号