我对编程完全陌生 我有一个表有2列Key(整数)和值(包含逗号分隔的字符串) 例如下面
Table A
Key Values
1 1,2
2 3,4
我有另一个表,其中包含2列Key(整数)和Value(单整数值)
Table B
Key Value
5 4
6 7
7 2
8 8
我正在尝试从表B中获取其值不在表A中的所有键。 像下面的东西。
Select * from B where Value not in (1,2,3,4)
非常感谢任何建议或帮助。
答案 0 :(得分:0)
您的tableA
格式为非常格式错误。您将数字存储为字符串,而不是本机格式。更糟糕的是,您将列表存储在字符串变量中。 SQL有一个非常有用的存储列表机制。它被称为表。在这种情况下,您需要的特定表结构是联结表。
尽管如此,有时您会遇到这种格式的数据。让我假设这是真的。您可以通过执行以下操作来解决此问题:
select *
from tableb b
where not exists (select 1
from tablea a
where ',' || a.values || ',' like '%,' || b.value || ',%'
);
与使用联结表的版本相比,效率非常低。
此外,这使用||
来连接字符串。这因数据库而异。它可能是+
。或&
,甚至只是concat()
功能。