sql - 如何在我的 SELECT 语句中使用 postgres 变量?
问题描述
我将一个值存储在一个变量中featureId
,然后尝试在我的 SELECT 语句中使用该值,但 postgres 似乎是按字面意思使用该名称并寻找一个名为“featureid”的列。我收到错误“错误:列“featureid”不存在第 4 行:featureId,”
我的代码如下。如何在 SELECT 语句中使用变量的值?
SELECT id INTO featureId FROM tableA WHERE NAME = 'some value';
INSERT INTO tableB (client_id, feature_id, does_have)
SELECT
id,
featureId,
TRUE
FROM tableA
解决方案
如果没有声明的变量,您SELECT INTO
就是SELECT INTO
创建表的版本。要亲自查看,请尝试:
SELECT id
INTO featureid
FROM tablea
WHERE name = 'some value';
SELECT *
FROM featureid;
为了将值分配给变量,必须声明变量。您可以使用匿名DO
块。
DO
$$
DECLARE
featureid tablea.id%TYPE;
BEGIN
SELECT id
INTO featureid
FROM tablea
WHERE name = 'some value';
INSERT INTO tableb
(client_id,
feature_id,
does_have)
SELECT id,
featureid,
true
FROM tablea;
END;
$$
LANGUAGE plpgsql;
推荐阅读
- android - 如何将 Actions on Google 连接到传递参数的 Android 应用程序
- javascript - 比较超过 2 个数组
- material-design - 如何在 Nuxt.js 中使用 Material.io 中的 Material Design 组件
- java - 使用 Swagger 上传 CSV 文件的问题
- javafx - 如何使用 TextFormatter 设置 JavaFx TextField 的内容
- amazon-web-services - 当路径设置为 / 以外的任何内容时,AWS Kubernetes 得到 404
- swift - 如何在 UICollectionView 单元格中显示活动指示器?
- python - Tensorflow Keras 序列模型
- google-app-engine - 带有 Cloud SQL 的标准应用引擎,使用 Java 8
- php - Laravel 将项目推送到 hasManyRelation Builder