sql - 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 中编写它?
解决方案
推荐阅读
- android - 模拟在 Android 手机上读取标签
- javascript - 开玩笑的新手 - 我将如何为这种方法编写测试?
- spring - JdbcOperationsSessionRepository 和 SessionDestroyed 不兼容
- sql - SQL 查询以排除名称末尾的数字、括号或特殊字符
- git - 如何从 Visual Studio Code 中的另一个分支提取和变基?
- json - 如何在 Ruby 中将流转换为对象
- cocoa - Swift 5.1/Cocoa:如何在 self 以外的类中注册一个方法作为通知观察者?
- reactjs - 如何使用 API 使 .map 函数工作
- forms - Uncaught SyntaxError: Unexpected token '<' - form tag and onclick
- regex - 是否有专门用于识别列或行中重复网站的公式?