当前位置: 首页 > 面试题库 >

如何在SQL查询中添加带有嵌套的where子句?

韩宏朗
2023-03-14
问题内容

我有这样的查询-

select unnest(string_to_array(news_article.news_category_id, ',')):: int rowz
     from news_article) where rowz=1;

由于将rowz = 1放入查询中,因此该查询无法正常工作?如果我只想要在嵌套后rowz = 1的结果该怎么办。

当我这样做时-

从news_article中选择unnest(string_to_array(na.news_category_id,’,’)):: int rowz;

我的桌子是-

Create table news_article(
id                          bigserial NOT NULL PRIMARY KEY,
news_headline               character varying(70) NOT NULL,
news_content_src            character varying(240) NOT NULL,
news_language_id            integer NOT NULL,
news_category_id            character varying(50) NOT NULL,
news_publisher_id           integer NOT NULL references news_publishers(pub_id),
news_date                   timestamp WITH TIME ZONE Default now()
);

然后它给了我这个结果-

rowz
1
2
1
3
2

问题答案:

这回答了您的问题:

SELECT * FROM
  (SELECT unnest(string_to_array(news_article.news_category_id, ',')):: int rowz
   FROM news_article) AS categories
WHERE rowz = 1;

诀窍是unnest数组放入一组记录中,然后将其用作子查询。

但是,结果看起来很愚蠢。您是否想要新闻文章的所有详细信息,这些新闻中news_category_id = 1可能包含其他类别?在这种情况下:

SELECT a.*
FROM news_article a
JOIN (SELECT id, unnest(string_to_array(news_article.news_category_id, ',')):: int rowz
      FROM news_article) AS c ON c.id = a.id
WHERE c.rowz = 1;


 类似资料:
  • 我在使用FOQElasticaBundle构建查询时遇到问题 我有3个实体 null

  • 问题内容: 这是我在elasticsearch中存储在索引上的数据类型。我必须找到包含主要成分牛肉(且重量小于1000)和成分-(辣椒粉且重量小于250),(橄榄油和重量小于300)以及所有其他成分类似的食谱。 索引的映射是 我的查询是 但这给了Null。有人可以帮我吗?我认为我没有正确使用嵌套查询 问题答案: 试试这个:

  • 问题内容: 我正在使用JPA 2.0。Hibernate 4.1.0.Final和Java6。如何从以下psuedo-SQL编写JPA查询? 我的域对象如下所示: 我知道涉及CriteriaBuilder.greatest,但是我只是不知道如何编写查询。这将返回所有与组织匹配的事件对象,但据我所知。 问题答案: 有两种方法,一种使用JPQL,另一种使用条件查询。 JPQL就是: 使用条件时,您可能

  • 问题内容: 我有一个数据库,并且使用查询来生成一个中间表,如下所示: 我想为a <avg(a)的用户计算b的标准偏差 我以这种方式计算avg(a),并且效果很好: 但是查询: 返回一个错误,更准确地说,我被告知无法识别avg中的“ a”(选择a from …)。这使我感到非常困惑,因为它可以在上一个查询中使用。 如果有人可以帮助我,我将不胜感激。 编辑: 我将查询结果存储到临时表中以生成中间表,但

  • 我想搜索整个内容树,但不搜索在其底部具有“请勿搜索”属性的特定树。 查询生成器API页面不引用除AND和OR之外的任何内容。 是否可以从搜索中排除路径,或者我只能显式地包括路径? 前三行是“/content和/content/path/es”。我想要“/content而不是(/content/path/es)” 我试了下两个真假都没有效果。 我找不到任何提到“不是”或“不是”的其他名称的文档可能会

  • 问题内容: 如果我的Boolean参数在 JasperReports中 为true,如何在SQL中添加sub where语句? 例如,我的SQL如下所示: 如果我的参数为true,我想 在之前添加 。 有人知道我怎么能做到这一点吗? 问题答案: 您可以添加其他参数来设置其他子句值。之后,您可以 在查询中使用语法。 例子: