183. Customers Who Never Order 1 建表
create table Customers( Id int not null auto_increment, Name varchar(20) default null, primary key (Id) ) create table Orders ( Id int not null auto_increment, CustomerId int default 0, primary key (Id) ) insert into Customers(Id, Name) values ( 1, 'Joe'); insert into Customers(Id, Name) values ( 2, 'Henry'); insert into Customers(Id, Name) values ( 3, 'Sam'); insert into Customers(Id, Name) values ( 4, 'Max'); insert into Orders(Id, CustomerId) values (1, 3); insert into Orders(Id, CustomerId) values (2, 1); select * from Customers; select * from Orders;解答:
select A.Name as Customers from Customers A where A.id not in (select CustomerId from Orders B)在下面左连接基础上选择需要的。
select * from Customers A left join Orders B on A.Id = B.CustomerId
select A.Name as Customers from Customers A left join Orders B on A.Id = B.CustomerId where B.CustomerId is null; SELECT A.Name as Customers from Customers A WHERE NOT EXISTS (SELECT 1 FROM Orders B WHERE A.Id = B.CustomerId)