SQL:LeetCode数据库题(MySQL)-简单部分

5 9 5 . 大国:面积 > 3 000000 或人口 > 2 5 000000。

1 8 2 查找重复的电子邮件地址:从用户组中选择电子邮件,按电子邮件数量 HAVING COUNT(email) > 1 .
6 2 7 交换工资:更新员工 SET 性别 = CASE WHEN 性别 = 'f' THEN 'm' ELSE 'f' END。

6 2 0。
有趣的电影:WHERE rating != 'boring' AND ID % 2 = 1 .
1 7 5 合并两个表: SELECT people.name,addresses.address FROM people LEFT JOIN reports ON people.id =addresses.person_id。

1 8 1 收入高于经理的员工: SELECT e1 .name FROM员工 e1 JOIN员工 e2 ON e1 .manager_id = e2 .id WHERE e1 .salary > e2 .salary。

1 8 3 从未订购过的客户:SELECTcustomers.nameFROMcustomersWHEREcustomer_idNOTIN(SELECTorder_idFROMorders)。

1 9 6 删除重复的电子邮件地址:DELETE FROM users WHERE id NOT IN (SELECT MIN(id) FROM users GROUP BY email)。

1 9 7 气温上升:从今天的温度中选择今天的日期,加入昨天的温度今天的 ID = 昨天的 ID + 1 ,其中今天的温度 > 昨天的温度。

5 9 6 学生人数超过 5 人的课程:从课程中选择 course_id,加入注册中的 course.id = enrollments.course_id GROUP BY course_id HAVING COUNT(enrollments.student_id) > 5
1 7 6 第二高薪资: SELECT DISTINCT薪资FROM员工 ORDER BY薪资DESC LIMIT 1 OFFSET 1 .
实用提醒:先运行SQL,再考虑优化。

连接查询内连接查询

内部沟通意味着选择合适的人并只聘用合适的人。
例如,要查看哪个学生选择了课程,请在学生列表和选课列表中选择相同编号的学生。
等效配对类似于使用等号来比较大小来搜索相同型号。
不等待连接意味着寻找差异,例如年龄超过 1 8 岁。
自然联系就像寻找朋友,只获得有用的信息。
记住这三种类型,检查数据就会容易得多。

数据库左连接、右连接、内连接、全连接笔记

说白了,数据库连接类型其实很简单,就是一种整合不同数据表的方式。
主要有左连接、右连接、内连接和全连接。
我们先来说说最重要的事情。
INNERJOIN 用于显示两个表共享的数据,就像两个集合的交集一样。
比如我们去年做的项目,内联查询了3 000级左右的数据,是两个表共享的部分。
还有一点是,LEFTJOIN 显示左表中的所有数据,包括右表共有的数据。
如果右表中没有匹配的硬币,则显示为空值。
去年的项目中,左连接帮助我们找到了左表中的所有数据,而不管右表中是否有匹配项。
还有另一个关键细节。
右连接(RIGHTJOIN)与左连接相反。
它显示右表中的所有数据,包括左表中的公共部分,对于不匹配的部分也显示零值。
很多人都没有注意到这一点,但这确实很重要。
起初我认为这些连接类型很容易理解,但后来发现事实并非如此。
尤其是当涉及到复杂的查询时,它们之间的差异可能会让人非常头疼。
等等,还有一件事,MySQL不支持全连接,但是我们可以通过左连接和右连接结合来去除重复,从而达到全连接的效果。
这个方法虽然不方便,但是还是比较实用的。

所以我认为值得一试。
如果进行数据库查询,尤其是处理多表关联时,需要了解不同连接类型的使用场景。
不要让空值和重复数据让您灰心。