首页 > 解决方案 > SQL 查询按具有表 id 的列聚合字符串匹配

问题描述

我将 Ecto 与 Postgres 一起使用,但这并不重要,因为我可以将原始 SQL 转换为我需要的内容,而且我不会编写太多原始 SQL,因此我将尝试用伪代码来表达这一点。假设我有table以下列column 1, column 2, column 3. column 1是一个整数,另外两个是字符变化(255)。我想要一个这样的查询:

FROM table t
WHERE t.column_1::varchar(255) LIKE '123%'::varchar(255) OR t.column_2::varchar(255) LIKE '123%'::varchar(255) OR t.column_3::varchar(255) LIKE '123%'::varchar(255)

我想基本上得到类似的东西:

{
   column_1: [[<table_id>, 12345], [<tabel_id>, 123789]],
   column_2: [[<table_id>, 123555], [<tabel_id>, 123654], [<tabel_id>, 123852]],
   column_3: []
}

它代表每列的一个数组,该数组由与该值where所在行的 table_id 匹配的值组成。您将如何在 SQL 中编写它?

标签: sqlpostgresql

解决方案


推荐阅读