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

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

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

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

3 回答

?
Qyouu

TA贡献1786条经验 获得超11个赞

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-22
?
holdtom

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

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

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


查看完整回答
反对 回复 2019-10-22
?
慕桂英4014372

TA贡献1871条经验 获得超13个赞

您也可以在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-22
  • 3 回答
  • 0 关注
  • 481 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信