我的问题是,为什么SQLite中的两次联接会改变大小写结果。
请摆弄小提琴:
http://sqlfiddle.com/#!7/88671/3
如您所见,当我查询“从用户中选择*”时,我使用的是大写名称A123456,但是当我进行两次联接时,我使用的是小写的名称a123456。
有人可以解释为什么吗?
架构如下:
CREATE TABLE user (id integer primary key, n_login varchar(64), name varchar(128), CONSTRAINT a UNIQUE (n_login, name) ON CONFLICT IGNORE);
CREATE TABLE role (id integer primary key, name text unique, description text);
CREATE TABLE user_to_role (user_id integer REFERENCES user(id), role_id integer REFERENCES role(id), PRIMARY KEY (user_id, role_id));
CREATE TABLE role_to_database (id integer, role_id integer REFERENCES role(id), database_id integer REFERENCES databases(id), PRIMARY KEY (role_id, database_id));
insert into user (n_login, name) values ("a123456", "A123456");
insert into user (n_login, name) values ("a123456", "a123456");
insert into user (n_login, name) values ("a000000", "A000000");
insert into user_to_role (user_id, role_id) values (2, 1);
insert into user_to_role (user_id, role_id) values (2, 2);
insert into user_to_role (user_id, role_id) values (3, 3);
insert into role_to_database (role_id, database_id) values (1, 3);
insert into role_to_database (role_id, database_id) values (2, 8);
insert into role_to_database (role_id, database_id) values (3, 1);
通过此查询,我得到A123456:
select * from user;
与此查询,我也有A123456:
select * from role_to_database inner join user_to_role ON role_to_database.role_id = user_to_role.role_id inner join user;
但是使用此查询,我只有a123456:
select * from role_to_database inner join user_to_role ON role_to_database.role_id = user_to_role.role_id inner join user ON user.id = user_to_role.user_id;
最佳答案
该查询将精确返回插入的数据:
insert into user_to_role (user_id, role_id) values (2, 1);
insert into user_to_role (user_id, role_id) values (2, 2);
insert into user_to_role (user_id, role_id) values (3, 3);
因为
user_id=1
不起作用。你的意思是
insert into user_to_role (user_id, role_id) values (1, 1); -- 1
insert into user_to_role (user_id, role_id) values (2, 2);
insert into user_to_role (user_id, role_id) values (3, 3);
?然后您也会得到
'A123456'
。关于sql - 两个连接更改大小,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56871288/