我试图了解不同(因此不同的计数)是如何工作的。我有一个数据:
Sessionid, User_solici, code
而在 1SessionID
中有 1 User_solici
。但是,可能有多个SessionID
相同的User_solici
.
对于User_solici
“a”,我有Session = 1, 55
和null
。
我想找到不同的SessionID
where (code = 7 and code = 1) OR (code = 7 and code = 2) for the same User_solici
。
我的查询已完成。
create table mytable
(
sessionid varchar(255),
User_solici varchar(255),
code varchar(255)
);
insert into mytable (sessionid, User_solici, code)
values
('1', 'a', '7'),
('1', 'a', '1'),
('1', 'a', '2'),
('1', 'a', '999'),
('2', 'b', '7'),
('2', 'b', '1'),
('2', 'b', '2'),
('2', 'b', '999'),
('55', 'a', '7'),
('55', 'a', '1'),
('55', 'a', '2'),
('', 'a', '7'),
('', 'a', '1'),
('', 'a', '2'),
('', 'c', '7'),
('', 'c', '1'),
('', 'c', '2');
select distinct
T1.sessionid
from
mytable T1
join
mytable T2 on T1.User_solici = T2.User_solici
and T1.code = '7'
and T2.code in ('1', '2');
select
T1.sessionid,
T1.User_solici,
T1.code as T1code,
T2.code as T2code
from
mytable T1
join
mytable T2 on T1.User_solici = T2.User_solici
and T1.code = '7'
and T2.code in ('1', '2');
但我试图了解 SQL 的作用。
查看原始表,我看到 5 个 sessionid (1,a), (2,b), (55,a), (,a) (,c) 满足。
或者我只能争辩 4 个 sessionid 作品(1)、(2)、(55)和(空白)
我认为该软件将转到第 1 行,如果代码 = 7,然后加入 User_solici,完成后,选择 distinct(在这种情况下将是会话 1 和空白),将此不同的计数(或最终文件)。完成第 1 行,转到第 2 行。这种情况下,它将创建 5 个计数。
谁能帮我理解在这种情况下 SQL 如何处理连接(或 null)?
谢谢,
哈利