当前位置: 首页 > 知识库问答 >
问题:

如何在WHERE子句中使用SELECT查询的结果

戚令秋
2023-03-14

来自Teradata,我通常会创建一个包含一些变量的易失性表,我会在代码中使用这些变量。

例如。,

create html" target="_blank">volatile table var as (
select 'filter_value' as var_field
) with data on commit preserve rows;

然后我会在SELECT WHERE子句中使用该表:

select * from table
where some_field = (select var_field from var);

我试图在色调(Impala editor)中执行类似的操作,但遇到了一个错误:

create table var as
select 'filter_value' as var_field

select * from table
    where some_field = (select var_field from var)

AnalysisException:第5行中的语法错误:未定义:来自表名隐藏^遇到:来自预期的:大小写、强制转换、默认值、存在、FALSE、IF、INTERVAL、NOT、NULL、REPLACE、TRUNCATE、TRUE、标识符导致:异常:语法错误

有人知道如何做到这一点或在Hue中复制此功能吗?

不必在整个代码中定义我的变量,并将它们都放在一个表的顶部,这很方便。

共有1个答案

汪驰
2023-03-14

我有个解决办法。我在色调中尝试过,我能够实现你的目标。

Teradata中使用的查询:

查询1:

create volatile table var as (
select 'filter_value' as var_field
) with data on commit preserve rows;

问题2:

select * from table
where some_field = (select var_field from var);

在Impala中用于上述相同场景的查询:

查询1:

create table var as
select 'filter_value' as var_field;

问题2:

SELECT * FROM test
where test_field in (select var_field from var);

为测试而执行的步骤:

1.易失性表创建:

create table var as
select 'filter_value' as var_field;

+-------------------+
| summary           |
+-------------------+
| Inserted 1 row(s) |
+-------------------+

2.易失性表数据检查:

SELECT * FROM var;

+--------------+
| var_field    |
+--------------+
| filter_value |
+--------------+

3.创建样本表和插入数据:

CREATE TABLE test 
(test_field string);

Fetched 0 row(s) in 0.81s

----

INSERT INTO test
values ("filter_value");

Modified 1 row(s) in 5.64s

----

INSERT INTO test
values ("filter_value2");

Modified 1 row(s) in 0.32s
----

4.样本表数据检查:

select * from test;

+---------------+
| test_field    |
+---------------+
| filter_value  |
| filter_value2 |
+---------------+

5.目标:

SELECT * FROM test
where test_field in (select var_field from var);

+--------------+
| test_field   |
+--------------+
| filter_value |
+--------------+
 类似资料:
  • 问题内容: 将SELECT查询放在UPDATE查询的WHERE子句中时出现错误。 我的查询是这样的: AND错误将显示如下: “无法在FROM子句中指定目标表’m’进行更新” 问题答案: 实际上,您可以通过将其包装在子查询中来更新它(从而为结果创建临时表) 或使用 JOIN

  • 问题内容: 在WHERE子句中有使用SELECT语句描述的名称吗?这是好/不好的做法吗? 这会是更好的选择吗? 它远没有那么优雅,但是运行起来比以前的版本要快。我不喜欢它,因为它在GUI中没有非常清晰地显示(并且SQL初学者需要理解它)。我可以将其分为两个独立的查询,但是随后事情变得混乱了…… 注意:我不仅需要日期和分数(例如姓名) 问题答案: 称为相关子查询。它有它的用途。

  • 我对JPA相当陌生,它是CriteriaBuilder/CriteriaQuery API: 我想查询一组对象的摘录(如下所示,我只选择结果中的元素n到m) 查询本身运行良好,我得到了预期的结果。 但是如果我尝试计算所有可能的结果,我会得到一个java。lang.IllegalArgumentException: org.hibernate.hql.internal.ast.无效路径:'生成lia

  • 问题内容: 谁能给我一些关于如何将这种子查询放入提示?(我正在使用 JPA 2.0 - Hibernate 4.x ) -第二个选择将始终获得单个结果或null。 问题答案: 尝试类似以下示例的操作来创建子查询: 请注意,由于附近缺少IDE,因此该代码尚未经过测试。

  • 问题内容: 此查询的目的是带回产品及其在售产品的价格,价格应从最接近但不等于传入日期的日期开始,本质上是最近的可用价格。没有每天的价格记录。在where子句中使用聚合select语句有些不对劲。有一个更好的方法吗?也许在加入标准中? 实际查询稍微复杂一些,但这本质上是问题。感谢您的输入。 编辑 将返回不止一种产品 编辑 我正在尝试@Remus Rusanu和@km的建议(尽管@Remus Rusa

  • 问题内容: 我最近才刚开始使用SQLAlchemy,但仍无法解决某些概念。 归结为基本元素,我有两个这样的表(通过Flask-SQLAlchemy): 我将如何查询用户列表及其最新帖子(不包括无帖子的用户)。如果我使用的是SQL,则可以执行以下操作: 因此,我确切地知道“期望的” SQL可以达到我想要的效果,但是不知道如何在SQLAlchemy中“正确地”表达它。 编辑:如果很重要,我使用的是SQ