问题标签 [sql-subselect]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
40 浏览

sql - 如何重用两个相同子查询检索到的值?

我为我的问题准备了一个简单的SQL Fiddle

在 PostgreSQL 10 中有 2 个表保存用户 ID 和用户社交网络数据(如名字、照片):

并且有 2 张桌子存放游戏和聊天消息:

在这里,我用测试数据填充表格:

  • Facebook 上 uid=1 和 sid="1111" 的用户“Alice”(social=10)
  • Google 上 uid=2 和 sid="2222" 的用户“Bob”(social=20)
  • gid=100 的游戏,两个用户都可以聊天

SQL:

我正在尝试创建一个 PHP 脚本,当给定sidsocialgid时,它将返回游戏 gid 的完整聊天。

我不只是使用gid参数来获取和显示聊天,因为我不希望其他用户监视他们不玩的游戏。

另外我不能使用uid参数来识别调用我的脚本的用户,我必须使用sidsocial参数(加上一个秘密,我从上面的测试用例中省略了)。

所以这是我获取聊天的 SQL 语句:

截屏

它有效,但我还需要 1 件事,这使得它变得复杂 - 对于每个聊天消息,我需要一个布尔值(而不是uid)来知道这是否是“爱丽丝”的消息(这样我就可以画出那条线粗体字)。

所以我正在尝试这样做,而 SQL 语句变得更加丑陋:

截图 2

正如您在上面的屏幕截图中看到的那样,这是可行的,但是如何改进此查询?

SQL 中有没有办法(即我不想在我的 PHP 脚本中保存uid值或使用 pl/pgSQL)在第二个子查询中重用uid ?

0 投票
2 回答
471 浏览

sql - 子查询 SQL DB2

我正在尝试在我的基本查询中创建一个子查询(针对特定列)。代码如下。

根据我尝试运行代码时弹出的错误消息,某处似乎存在某种错字。

然而,在显而易见的地方,或者至少在我看来,没有什么可以发现错误。此外,在一张空白表中运行子选择(在基本查询之外,新的)它可以正确运行。

谢谢

0 投票
2 回答
89 浏览

postgresql - 从可选子查询中插入多个返回值

我想用另一个表中的参数和一些可选值做一个 INSERT。(可选的意思是如果子查询失败,我只想插入参数值而不是什么都不插入。)

我的第一次尝试是:

但没有用。错误消息是“子选择必须只有一个字段”。

受这个问题启发的另一种方法是:

但这仅执行INSERTif 它为该WHERE子句找到某些内容。所以它的行为与真正的子查询不同。所以我想出了这个:

哪个有效,但由于两个子选择,当然看起来不必要的慢。

所以我的问题是:我能以某种方式让它只与一个子选择一起工作吗?

0 投票
2 回答
68 浏览

sql - 选择子查询中的 NULLS

我有两张桌子。一个显示工作模式名称,一个显示每天的工作小时数,每列中都有模式 ID。我希望它链接起来,以便每天的时间显示在一行上。对于每个模式,最多有 28 个,因此任何天数较少的模式都应返回 null。我使用了以下内容:

我得到以下结果

在此处输入图像描述

有没有办法让每个模式 ID 的所有时间都在一行上?

先感谢您!

0 投票
1 回答
16 浏览

mysql - Mysql Subselect 排名

我有两张表,上面有价格和文章。表格价格可以包含一篇文章的多行。我需要为每篇文章找到最匹配的价格。我的第一次尝试是:

在子选择中,我计算每个价格行的排名,以便稍后我可以按此排名进行排序。结果是:

你可以看到我现在有两个article_variant_id 1830 的价格,排名为 190 和 90。但我只需要排名 190 的价格。当我添加

然后排名为 190 的行消失。

有任何想法吗?

0 投票
2 回答
218 浏览

sql - 如何从子选择中选择不存在的列?

acc_co表中没有cust_id列。但是当我运行选择时,它有结果。但是怎么做?

(这次选择的结果和cust表的行号是一样的。)

0 投票
1 回答
937 浏览

sql - SQL在where语句中使用日期范围的选择子查询来确定该日期范围内的最大值

我试图在一个时间范围内获得每个用户的最大值。日期范围由每个用户在单独的时间范围内的第一次出现和前 2 周确定,即用户在 10 月首次出现的时间是 2018 年 10 月 1 日,因此范围是从 2018 年 9 月 18 日至 2018 年 10 月 1 日。在该范围内,我正在寻找一列的最大值。所有这些数据都来自同一张表。

例子:

我正在寻找在 OCT 1 之前的两周(包括 OCT 1 之后的第一次出现)的峰值 VALUE。对于用户 1 而言,这将是 2018-10-01,对于用户 2,将是 2018-10-02。然后峰值将是 106和 88,分别。

我尝试了代码:

我收到一个错误:

语法错误:在“2”处或附近

但我认为这只是我问题的开始。有谁知道在该时间范围内为每个 profile_id 找到最大值的最佳方法?

0 投票
2 回答
20 浏览

sql-server - 使用子选择向视图添加更多列

使用 Microsoft SQL Server 2012,我正在尝试创建一个新视图,该视图将在描述匹配时返回一行的真实开始和结束。

我有一张看起来像这样的桌子

我想再添加 2 列,这样当 desc 匹配时,它会返回来自 ID 2 的 0 和来自 ID 3 的 200,如下所示:

到目前为止我的语法:

当描述匹配时,我不知道如何对这两行进行分组和比较,并选择两者中最低的。我会自己玩并更新线程。

非常感谢!

0 投票
1 回答
322 浏览

oracle - Oracle 嵌套 CONNECT BY 子句导致性能不佳

下面的查询大约需要一分钟。我相信性能不佳是由两个“IN(SELECT ...”子句引起的。我有一个术语表,其中一个可以通过 term_relationship 表连接到另一个。这些关系可以是递归的,例如 dog 是一种哺乳动物,哺乳动物是一种动物。这种递归可以是任何深度,但可能不超过 10 个级别。我正在尝试选择所有与 A 型具有(潜在递归)关系并具有(潜在递归)关系的术语使用 B 类型。我认为用对外部查询的限制替换两个“IN (SELECT ...”子句会提高性能,但无法弄清楚如何使用 CONNECT BY 子句来做到这一点。有人可以帮忙吗?

0 投票
2 回答
99 浏览

sql - 使用主查询中的按项目分组的 SQL 子查询

我有一个带有created时间戳和id标识符的表。

我可以通过以下方式获得id每周唯一的数量:

现在我想获得每周created唯一的累计数量,如下所示:id

但这不起作用,因为week在 sub select ( ERROR: column "week" does not exist) 中无法访问。

我该如何解决这个问题?

我正在使用 PostgreSQL