问题标签 [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.
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 脚本,当给定sid、social和gid时,它将返回游戏 gid 的完整聊天。
我不只是使用gid参数来获取和显示聊天,因为我不希望其他用户监视他们不玩的游戏。
另外我不能使用uid参数来识别调用我的脚本的用户,我必须使用sid和social参数(加上一个秘密,我从上面的测试用例中省略了)。
所以这是我获取聊天的 SQL 语句:
它有效,但我还需要 1 件事,这使得它变得复杂 - 对于每个聊天消息,我需要一个布尔值(而不是uid)来知道这是否是“爱丽丝”的消息(这样我就可以画出那条线粗体字)。
所以我正在尝试这样做,而 SQL 语句变得更加丑陋:
正如您在上面的屏幕截图中看到的那样,这是可行的,但是如何改进此查询?
SQL 中有没有办法(即我不想在我的 PHP 脚本中保存uid值或使用 pl/pgSQL)在第二个子查询中重用uid ?
sql - 子查询 SQL DB2
我正在尝试在我的基本查询中创建一个子查询(针对特定列)。代码如下。
根据我尝试运行代码时弹出的错误消息,某处似乎存在某种错字。
然而,在显而易见的地方,或者至少在我看来,没有什么可以发现错误。此外,在一张空白表中运行子选择(在基本查询之外,新的)它可以正确运行。
谢谢
postgresql - 从可选子查询中插入多个返回值
我想用另一个表中的参数和一些可选值做一个 INSERT。(可选的意思是如果子查询失败,我只想插入参数值而不是什么都不插入。)
我的第一次尝试是:
但没有用。错误消息是“子选择必须只有一个字段”。
受这个问题启发的另一种方法是:
但这仅执行INSERT
if 它为该WHERE
子句找到某些内容。所以它的行为与真正的子查询不同。所以我想出了这个:
哪个有效,但由于两个子选择,当然看起来不必要的慢。
所以我的问题是:我能以某种方式让它只与一个子选择一起工作吗?
mysql - Mysql Subselect 排名
我有两张表,上面有价格和文章。表格价格可以包含一篇文章的多行。我需要为每篇文章找到最匹配的价格。我的第一次尝试是:
在子选择中,我计算每个价格行的排名,以便稍后我可以按此排名进行排序。结果是:
你可以看到我现在有两个article_variant_id 1830 的价格,排名为 190 和 90。但我只需要排名 190 的价格。当我添加
然后排名为 190 的行消失。
有任何想法吗?
sql - 如何从子选择中选择不存在的列?
在acc_co表中没有cust_id列。但是当我运行选择时,它有结果。但是怎么做?
(这次选择的结果和cust表的行号是一样的。)
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 找到最大值的最佳方法?
sql-server - 使用子选择向视图添加更多列
使用 Microsoft SQL Server 2012,我正在尝试创建一个新视图,该视图将在描述匹配时返回一行的真实开始和结束。
我有一张看起来像这样的桌子
我想再添加 2 列,这样当 desc 匹配时,它会返回来自 ID 2 的 0 和来自 ID 3 的 200,如下所示:
到目前为止我的语法:
当描述匹配时,我不知道如何对这两行进行分组和比较,并选择两者中最低的。我会自己玩并更新线程。
非常感谢!
oracle - Oracle 嵌套 CONNECT BY 子句导致性能不佳
下面的查询大约需要一分钟。我相信性能不佳是由两个“IN(SELECT ...”子句引起的。我有一个术语表,其中一个可以通过 term_relationship 表连接到另一个。这些关系可以是递归的,例如 dog 是一种哺乳动物,哺乳动物是一种动物。这种递归可以是任何深度,但可能不超过 10 个级别。我正在尝试选择所有与 A 型具有(潜在递归)关系并具有(潜在递归)关系的术语使用 B 类型。我认为用对外部查询的限制替换两个“IN (SELECT ...”子句会提高性能,但无法弄清楚如何使用 CONNECT BY 子句来做到这一点。有人可以帮忙吗?
sql - 使用主查询中的按项目分组的 SQL 子查询
我有一个带有created
时间戳和id
标识符的表。
我可以通过以下方式获得id
每周唯一的数量:
现在我想获得每周created
唯一的累计数量,如下所示:id
但这不起作用,因为week
在 sub select ( ERROR: column "week" does not exist
) 中无法访问。
我该如何解决这个问题?
我正在使用 PostgreSQL