【发布时间】:2020-05-27 05:27:40
【问题描述】:
我的问题如下:
我有两个表:第一个表有两列(person_id 和 account_ids 列)。 Account_ids 列存在逗号分隔的帐户 ID:
Person_ID Account_ids
-----------------------------------------------------------------
123 000000grVA6AM,000016ILMhAO, 000000ihi4MAQ, 000000TF5MAQQ,000000TF5MAHZ
124 000000frVA6AM,000016ILMhAO
125 000000frVA6BC,000024ILMhJZ, 000000frXC6A,000024YTMhA
第二张表包含有关 person_id 的详细信息
Person_ID Account_ID Account_Name
----------------------------------------
123 000000grVA6AM Name1
123 000016ILMhAO Name2
123 000000ihi4MAQ Name3
123 000000TF5MAQQ Name4
123 000000TF5MAHZ Name5
124 000016ILMhAO Name2
124 000000TF5MAHZ Name5
124 000000frVA6AM Name6
124 000024ILMhAO Name7
124 000000frVA7XZ Name8
125 000000frVA6BC Name9
125 000024ILMhJZ Name10
125 000000frXC6A Name11
125 000024YTMhA Name12
125 000024IXThJY Name13
我想为每个person_id 找到所有account_ids,而这些Person_ID 没有出现在表1 中。例如,从上面的例子中,答案应该是:
Person_ID Account_ID Account_Name
-----------------------------------------
124 000000TF5MAHZ Name5
124 000024ILMhAO Name7
124 000000frVA7XZ Name8
125 000024IXThJY Name13
我该怎么做?
我试图应用 not like 子句,但后来我不明白如何在表 1 中拆分逗号分隔值。请帮忙!
谢谢!
更新:
提供临时表创建查询,以便更容易测试:
CREATE TEMP table persons
( person_id int, account_id varchar(20), account_name varchar(10))
insert into persons values
(123, '000000grVA6AM', 'Name1');
insert into persons values
(123, '000016ILMhAO', 'Name2');
insert into persons values
(123, '000000ihi4MAQ', 'Name3');
insert into persons values
(123, '000000TF5MAQQ', 'Name4');
insert into persons values
(123, '000000TF5MAHZ', 'Name5');
insert into persons values
(124, '000016ILMhAO', 'Name2');
insert into persons values
(124, '000000TF5MAHZ', 'Name5');
insert into persons values
(124, '000000frVA6AM', 'Name6');
insert into persons values
(124, '000024ILMhAO', 'Name7');
insert into persons values
(124, '000000frVA7XZ', 'Name8');
insert into persons values
(125, '000000frVA6BC', 'Name9');
insert into persons values
(125, '000024ILMhJZ', 'Name10');
insert into persons values
(125, '000000frXC6A', 'Name11');
insert into persons values
(125, '000024YTMhA', 'Name12';
insert into persons values
(125, '000024IXThJY' 'Name13');
对于帐户表:
CREATE TEMP table accounts
(person_id int, account_ids varchar(100))
insert into accounts values
(123, '000000grVA6AM,000016ILMhAO, 000000ihi4MAQ, 000000TF5MAQQ,000000TF5MAHZ');
insert into accounts values
(124, '000000frVA6AM,000016ILMhAO');
insert into accounts values
(125, '000000frVA6BC,000024ILMhJZ, 000000frXC6A,000024YTMhA');
【问题讨论】:
-
您的 SQL Server 版本是多少?
-
Amazon Redshift 还是 Microsoft SQL Server?这是两种截然不同的数据库产品
-
@user10096621 。 . .我删除了不一致的数据库标签。具有您在网站上的经验的人应该知道如何使用您实际使用的数据库标记问题。
-
抱歉,不知道我如何标记 SQL Server,它实际上是 Redshift。
标签: sql amazon-redshift