2019年11月14日sql
目录 从不订购的客户code
题目:blog
解题1leetcode
解题2io
解题3class
思路拓展select
思路拓展2sql语句
CREATE TABLE Customers ( Id INT NOT null , Name VARCHAR(128) DEFAULT '', PRIMARY KEY (Id) ) ENGINE = INNODB DEFAULT CHARSET=utf8mb4; CREATE TABLE Orders ( Id INT NOT null , CustomerId LONG NOT null , PRIMARY KEY (Id) ) ENGINE = INNODB DEFAULT CHARSET=utf8mb4;
-- not exists SELECT NAME Customers FROM customers WHERE NOT EXISTS (SELECT 1 FROM orders WHERE orders.CustomerId = customers.Id);
-- left join select A.Name as Customers from Customers A left join Orders B on A.Id = B.CustomerId where B.Id is null;
select customers.name as 'Customers' from customers where customers.id not in ( select customerid from orders );
其中上图黑色框里的sql解决的问题是:不在表里的数据,也就是在表A里的数据,可是不在表B里的数据。im
对于这个题目“不是近视眼的学生都有谁?”,就是在“学生表”里的数据,可是不在“近视学生”表里的数据。咱们选择下图黑色框里的左联结sql语句。d3
select ... from 表1 as a left join 表2 as b on a.列名=b.列名 where b.列名 is null;
做者:houziAI
连接:https://leetcode-cn.com/problems/customers-who-never-order/solution/tu-jie-sqlmian-shi-ti-cha-zhao-bu-zai-biao-li-de-s/
来源:力扣(LeetCode)
著做权归做者全部。商业转载请联系做者得到受权,非商业转载请注明出处。
select * 会返回全部的字段,而select 1 存在记录的话会返回数字1