gpt4 book ai didi

sqlite - 如何在SQLite中执行多列匹配?

转载 作者:行者123 更新时间:2023-12-03 09:44:39 25 4
gpt4 key购买 nike

给定两个具有重叠列定义(T1T2)的表BC,我该如何选择T1中的行,而在B中找不到CT2(在同一行?
T1 without T2
这是设置:

create table T1('A' TEXT, 'B' TEXT, 'C' TEXT);
insert into T1 values
('a1', 'b1', 'c1'),
('a2', 'b2', 'c2'),
('a3', 'b3', 'c3');
create table T2('B' TEXT, 'C' TEXT, 'D' TEXT);
insert into T2 values
('b1', 'c1', 'd1'),
('b2', 'c2', 'd2'),
('b4', 'c4', 'd4');


通过以下查询,我可以选择正确的行。但是,这仅限于 BC列,因此缺少 A

select B, C from T1
intersect
select * from (select B, C from T1
except
select B, C from T2);
-- this yields:
-- b3|c3


我想做的是这样的:

select * from T1
intersect
select * from (select B, C from T1
except
select B, C from T2);
-- this yields:
-- Error: SELECTs to the left and right of INTERSECT do not have the same number of result columns


(请注意第一个 *语句中的 select。)我似乎无法掌握使用子查询选择行并返回完整行的概念。

如何更改查询以使结果为 a3|b3|c3

顺便说一句,这是一个真实的示例,其中我从文件系统的还原中转储了文件名,并且我想知道还原中缺少哪些文件。

最佳答案

也许不是最好/最优雅的解决方案,但以下方法似乎可行:-

SELECT A, X1B AS B, X1C AS C FROM
(select X1.B AS X1B, X1.C AS X1C from T1 AS X1
except
select T2.B, T2.C from T2)
JOIN T1 ON B = X1B AND C = X1C


要么 :-

SELECT A, B, C FROM
(select X1.B AS X1B, X1.C AS X1C from T1 AS X1
except
select T2.B, T2.C from T2)
JOIN T1 ON B = X1B AND C = X1C


导致 :-

enter image description here

关于sqlite - 如何在SQLite中执行多列匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49936225/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com