LeetCode刷题日记(二)

leetcode天天见~今天面了京东,希望可以过HR面!

182.查找重复的电子邮箱
183.从不订购的客户
196.删除重复的电子邮箱

182.查找重复的电子邮箱
虽然是一道简单题,但是终于见到了之前没学好的GROUP BY和HAVING 开心😊
GROUP BY用来进行分组
HAVING用来过滤分组

SELECT Email
FROM Person
GROUP BY Email
HAVING COUNT(Email) > 1;

183.从不订购的客户
吼吼吼~~!!此题的目标是!找出白嫖党
会是谁呢~给出的表是所有的用户以及购买过的用户,从所有用户里找出NOT IN购买过的就好啦

SELECT customers.name AS 'Customers'
FROM customers
WHERE customers.id NOT IN (    
SELECT customerid FROM orders);

这样执行之后的结果并不是特别好!!我怎么会心甘情愿满足~于是乎,我去翻了万能的评论,学到了左联结查询这一神奇的做法

SELECT Name AS Customers
FROM Customers LEFT JOIN Orders
ON Customers.Id = Orders.CustomerI
dWHERE Orders.Id is null

机智的我以为这样会有质的飞跃!妹想到啊~并没有差太多,但还是学到了学到了~~

196.删除重复的电子邮箱
找到每组邮箱中的最小ID,利用DELETE删掉ID不在最小ID中的行

DELETE FROM Person
WHERE Id NOT In(    
SELECT MINEmail.Id FROM (        
(SELECT MIN(Id) as Id FROM Person GROUP BY Email) AS MINEmail    ))

感觉官方解答有点绕且没踏到点子上~~不如暴力解答来得直接!而且超过了99%多的人,很满意啦

今天就到这里啦!最近开始掉头发了,为了能保持美美的!早点睡觉!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值