首页 > 解决方案 > SQLlite 内部连接查询给出荒谬的结果

问题描述

我正在尝试运行一个示例,我想知道每个员工的经理姓名,但我看不到所有行。

表结构

CREATE TABLE IF NOT EXISTS t1 (
    staff_number INTEGER PRIMARY KEY,
    fname VARCHAR(20),
    lname VARCHAR(30),
    gender CHAR(1),
    country VARCHAR(30),
    manager_id INTEGER,
    joining DATE)

[(10, 'piyush', 'Bansal', 'M', 'Canada',16,'2014-03-28'),
 (16, 'gillbart', 'Gates', 'M', 17,'United States','1980-10-28'),
 (17, 'amezaa', 'Craft', 'F', 19,'Japan','2016-03-14'),           
 (19, 'Marbles', 'IsaDog', 'F','United States',20, '2018-11-03'),
 (12, 'Maks', 'Demin', 'M','United States',16,'2018-11-03'),
 (20, 'Sean', 'Hartrich', 'M','United States',19,'2014-02-16'),
 (24, "Sam", "theBrit", "M","United Kingdom",10,'2014-02-16')]

询问

SELECT e.fname ,m.fname FROM t1 e INNER JOIN t1 m ON e.manager_id = m.staff_number

输出

('piyush', 'gillbart')
('Maks', 'gillbart')
('Marbles', 'Sean')
('Sean', 'Marbles')
('Sam', 'piyush')

此处缺少 Bill 和 Brena 作为员工和经理的条目。任何线索这里发生了什么?

预期输出

('piyush', 'gillbart')
('Maks', 'gillbart')
('Marbles', 'Sean')
('Sean', 'Marbles')
('Sam', 'piyush')
('gillbart','amezza')
('amezza','Marbles')

标签: mysqlsqlsqlite

解决方案


你脚本的两行有错误:

(16,'吉尔巴特','盖茨','M',17,'美国','1980-10-28'),

(17, 'amezaa' , 'Craft' , 'F', 19 ,'Japan','2016-03-14'),

country的列值改为manager_id 。


推荐阅读