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

如何连接表行中的所有结果?

田德馨
2023-03-14
问题内容

找不到解决方案来执行以下操作:

SELECT CONCAT_WS(',', (
    SELECT * FROM table WHERE id = 1
))

如何在PostgreSQL中做到这一点?


问题答案:

快速而肮脏:

SELECT t::text FROM tbl t WHERE id = 1;
  • t是表的别名,并非严格需要。您也可以使用原始表名。但是,如果您具有相同名称的列,则该列具有优先权。

  • 因此,t代表表的行类型,该行类型将自动强制为输出的文本表示形式。
    我还添加了一个显式的强制转换, 使其text内部也可以使用-如果您想对其进行任何处理,…
    t::text是SQL标准的Postgres缩写cast (t AS text),您也可以使用它。手册中的详细信息。

  • 您可能需要修剪表示行类型的(单个!)前导和尾括号:

    SELECT right(left(t::text, -1), -1))
    

    FROM tbl AS t
    WHERE id = 1;

  • “脏”,因为您得到Postgres行表示法,所以分隔符恰好是您要求的逗号,但是某些值也被转义和/或在需要时用双引号引起来。



 类似资料:
  • 我的数据库中有一个小特例,我需要从两个具有一对一关系的不同表中获取数据,以获得有用的结果。获取看起来像这样: 当然,我在实际代码中使用了-这只是一个示例。我的问题是是否以及如何将jOOQ中获取的数据写入POJO。我不确定是否有办法让jOOQ为我生成这个POJO,但如果我必须自己编写它,我假设我需要像适配器这样的东西以及像作为数据类型的转换器。 我看到有可能出现RecordMapperProvide

  • 问题内容: 我正在编写一些db实用程序脚本,我需要做的任务之一是仅重建数据,而保持架构不变。使用bash和mysql工具(无php等)从命令行自动执行此操作的最简单方法是什么? 更新:我希望该解决方案可以在一个命令中处理所有表,并且如果可能的话,如果添加或删除了表,则不需要更新。 问题答案: 这将清空表的内容。 响应Q编辑:从我的快速测试中看来,您将必须至少执行2个查询,因为似乎“显示表”不能用作

  • 问题内容: 建立连接并要读取来自连接的字节后,如何读取所有字节?从我尝试过的内容中,我可以读取直到到达分隔符(如换行符)为止。但是如何获得包括换行符在内的所有信息?我试图在Go中创建一个Redis客户端,并且该协议使用\ r \ n分隔结果,因此在这种情况下,Buffer.ReadLine或Buffer.ReadSlice没有帮助。 问题答案: 要从读取器读取所有字节(例如您的TCP连接),可以使

  • 我看到的mysql表如下所示: 用户信息 id |用户id |电话号码|信息|方向|创建于 用户 id |名称 我想'组由'user_messages两次和UNION的结果。我为什么要这么做?因为user_id有时有一个有效的用户ID(不是'-1'),所以我按它分组,如果它有-1,则按phone_number分组。 我也想左加入结果与用户表以获得用户名的情况下user_id设置为一个有效的用户 我

  • 问题内容: 我有一个表A,并且有一个主键ID。 现在我要遍历A中的所有行。 我发现类似“针对A中的每个记录”的内容,但这似乎并不是您在MySQL中的处理方式。 我想为每一行获取一个字段并对其进行转换,将其插入到另一个表中,然后更新该行的某些字段。我可以将select部分和insert放入一个语句中,但是我也不知道如何在其中进行更新。所以我想循环。实际上,我不想使用MySQL以外的任何东西。 编辑

  • 在java reactor中,r2dbc。我有两个表A和B。我还为它们定义了存储库。如何获取由连接B组成的数据? 我只提出了以下方法:调用databaseClient。从A中选择,然后在循环调用中从B中选择。 但我想要更有效、更被动的方式。怎么做?