当前位置: 代码迷 >> SQL >> sql not in语句解决办法
  详细解决方案

sql not in语句解决办法

热度:53   发布时间:2016-05-05 11:46:25.0
sql not in语句
查询如下:

select MemNo
from Member
where MemNo not in (select BorrowerMemNo from Book)

表和数据如下:
CREATE TABLE Member(
MemNo NUMERIC(20) NOT NULL,
DriverLicState VARCHAR(20),
DriverLicNo VARCHAR(40),
Fname VARCHAR(20),
MI VARCHAR(10),
Lname VARCHAR(20),
Address VARCHAR(250),
PhoneNumber VARCHAR(15),
PRIMARY KEY (MemNo));
----------------------------------------------------
CREATE TABLE Book(
Book_ID NUMERIC(20) NOT NULL,
Edition VARCHAR(80),
BorrowerMemNo NUMERIC(20),
BorrowDueDatetime DATETIME,
CallNumber VARCHAR(40),
LibCheck NUMERIC(20),
PRIMARY KEY (Book_ID),
FOREIGN KEY (CallNumber) REFERENCES Title(CallNumber),
FOREIGN KEY (BorrowerMemNo) REFERENCES Member(MemNo),
FOREIGN KEY (LibCheck) REFERENCES Librarian(SSN));
----------------------------------------------------------
INSERT INTO Member VALUES (123, 'PA', '123', 'John', '', 'Summers', '4615 Forbes Ave, Pittsburgh, PA 15213', '412-268-0001');
INSERT INTO Member VALUES (124, 'GA', '124', 'Jon', '', 'Butterworth', '10 Fifth Ave, Atlanta, GA 30332', '404-894-0001');
INSERT INTO Member VALUES (125, 'PA', '125', 'Susan', 'B', 'Carlione', '4600 Verona Road, Pittsburgh, PA 15217', '412-200-0001');
INSERT INTO Member VALUES (126, 'NC', '126', 'Mohammed', '', 'Ismail', '250 Peachtree Street, Salem, NC 15213', '421-268-0001');
INSERT INTO Member VALUES (127, 'PA', '127', 'Asterio', '', 'Tanaka', '415 Craig Street, Pittsburgh, PA 15213', '412-220-0001');
--------------------------------------------------------------
INSERT INTO Book VALUES (123, '1', 123, '2000-12-12', 'Call123', 202);
INSERT INTO Book VALUES (223, '1', 125, '2000-11-11', 'Call123', 201);
INSERT INTO Book VALUES (124, '1', 124, '2000-06-09', 'Call124', 201);
INSERT INTO Book VALUES (224, '1', 125, '2000-11-11', 'Call124', 201);
INSERT INTO Book VALUES (125, '1', 125, '2000-11-11', 'Call125', 201);
INSERT INTO Book VALUES (225, '1', NULL, NULL, 'Call125', NULL);
INSERT INTO Book VALUES (126, '1', 125, '2000-11-11', 'Call126', 201);
INSERT INTO Book VALUES (226, '1', 124, '2000-06-09', 'Call126', 202);
INSERT INTO Book VALUES (326, '1', 124, '2000-06-09', 'Call126', 202);
INSERT INTO Book VALUES (127, '1', NULl, NULL, 'Call127', NULL);
INSERT INTO Book VALUES (128, '1', 125, '2000-11-11', 'Call128', 201);
INSERT INTO Book VALUES (228, '1', 126, '2000-10-10', 'Call128', 202);
INSERT INTO Book VALUES (129, '1', 123, '2000-12-12', 'Call129', 202);
INSERT INTO Book VALUES (229, '1', 125, '2000-12-12', 'Call129', 202);
部分数据没有用,请问为什么这个结果是空呢???
用的是SQL 2012
------解决方案--------------------
你把BorrowerMemNo 是null得那两行去掉试试
------解决方案--------------------
楼主啊,你的这个SQL语句,结果本来就是空啊。
Member表中的memno在表Book中都有啊。
所以必然为空啊。
------解决方案--------------------
BorrowerMemNo有NULL值,加上对NULL值的判断
  相关解决方案