Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在查询的其他位置使用子查询的结果_Sql_Sqlite - Fatal编程技术网

Sql 在查询的其他位置使用子查询的结果

Sql 在查询的其他位置使用子查询的结果,sql,sqlite,Sql,Sqlite,我有以下伪sqlite调用: SELECT x, y, (SELECT --very long SQL call--) AS z, (SELECT a FROM diff_table_name WHERE b = z) AS e FROM table_name WHERE c = d 基本上,我想在第二个子查询中使用来自第一个子查询的z变量结果,但是我得到了一个 没有这样的列:z 当我这样做的时候会出错。我可以在第二个子查询中重复很长的SQL调用,这很有效,但我希望不必这样做。

我有以下伪sqlite调用:

SELECT x, y,
    (SELECT --very long SQL call--) AS z,
    (SELECT a FROM diff_table_name WHERE b = z) AS e
FROM table_name
WHERE c = d
基本上,我想在第二个子查询中使用来自第一个子查询的
z
变量结果,但是我得到了一个

没有这样的列:z


当我这样做的时候会出错。我可以在第二个子查询中重复很长的SQL调用,这很有效,但我希望不必这样做。或者有一种方法可以从一个子查询返回
a
z

这部分查询:

SELECT x, y,
  (SELECT --very long SQL call--) AS z
FROM table_name
WHERE c = d
可以安全地包装在CTE内,然后使用
z

WITH cte AS (
  SELECT x, y,
    (SELECT --very long SQL call--) AS z
  FROM table_name
  WHERE c = d
)
SELECT x, y, z,
  (SELECT a FROM diff_table_name WHERE b = z) AS e
FROM cte

很长的SQL调用是相关子查询吗?你能发布真实的查询和一些示例数据吗?@TimBiegeleisen我刚刚在你的帖子上评论说,我相信这是一个相关的子查询。至于发布真正的查询。。。有那么多与手头问题无关的无关内容,我觉得有必要对其进行编辑。不管怎样。。。我希望有一个简单的答案,我只是不知道。。。如果我在调用中只使用了两次长子查询,这并不可怕。。。我只是在想/希望有一种更干净的方法可以做到这一点。您可以重写查询以使用连接而不是相关子查询。但是我不能在没有看到真正代码的情况下提供解决方案;你发布的内容太笼统了。