我正在尝试使用子查询的结果在一般查询中传递,而是直接返回子查询的值。 在下面的示例中,我有一个包含一些数字结果的表,另一个表包含要在查询中使用的公式。
通过硬编码公式直接查询结果没有问题:
SELECT (SELECT formula FROM myschema.formulas WHERE id = 'res1') AS "Result1",
col2 AS "Result2",
FROM
myschema.results
但是我想使用子查询从公式表中获取公式:
Result 1 Result 2
3 2
在第一个查询中,我正确地得到类似
的内容Result 1 Result 2
col1 + col2 2
但是在使用子查询时我错误地得到了:
import flask
from flask import request, render_template
import numpy as np
import pandas as pd
from copy import deepcopy
from werkzeug import secure_filename
from PIL import Image
import catdog
# Initialize the app
app = flask.Flask(__name__)
@app.route("/")
def viz_page():
with open("frontend.html", 'r') as viz_file:
return viz_file.read()
@app.route("/uploader", methods=["GET","POST"])
def get_image():
if request.method == 'POST':
f = request.files['file']
sfname = 'images/'+str(secure_filename(f.filename))
f.save(sfname)
clf = catdog.classifier()
#clf.save_image(f.filename)
return render_template('result.html', pred = clf.predict(sfname), imgpath = sfname)
#--------- RUN WEB APP SERVER ------------#
# Start the app server on port 80
# (The default website port)
app.run(host='0.0.0.0', port=5000, debug=True)
如何确保在第一个查询中解释子查询结果?我找到了一些使用连接的解决方案,但我不确定这是我需要的,并想知道是否有更简单的方法来实现这一点。谢谢你的帮助!
答案 0 :(得分:1)
您要求的是动态SQL。
像这样的东西。
CREATE OR REPLACE FUNCTION foo()
RETURNS SETOF int AS
$$
BEGIN
RETURN QUERY EXECUTE 'SELECT ' || (SELECT 'x'::text) ||' FROM generate_series(1,10) AS gs(x);';
END;
$$ LANGUAGE plpgsql;