SQL每日一题F0215,多种方法及思路讲解
236 字
1 分钟
SQL每日一题F0215,多种方法及思路讲解
SQL每日一题F0215,多种方法及思路讲解
CREATE TABLE F0215
(
StuID INT,
CID VARCHAR(10),
Course INT
)
INSERT INTO F0215 VALUES
(1,'001',67),
(1,'002',89),
(1,'003',94),
(2,'001',95),
(2,'002',88),
(2,'004',78),
(3,'001',94),
(3,'002',77),
(3,'003',90)
select * from f0215
/*
查询出既学过'001'课程,也学过'003'号课程的学生ID
*/
--错误写法
SELECT * FROM F0215
WHERE CID='001' AND CID='003'
SELECT * FROM F0215
WHERE CID='001' OR CID='003'
--思路一,取自连接符合条件的学生
SELECT T1.STUID FROM
( SELECT STUID FROM F0215 WHERE CID='001' ) T1
INNER JOIN
(SELECT STUID FROM F0215 WHERE CID='003' ) T2
ON T2.STUID=T1.STUID
SELECT A.STUID
FROM F0215 A,F0215 B
WHERE A.CID = '001'
AND B.CID = '003'
AND A.STUID = B.STUID
--思路二,使用交集取出同时满足条件的学生
SELECT SC.STUID
FROM F0215 SC
WHERE SC.CID='001'
INTERSECT
SELECT SC.STUID
FROM F0215 SC
WHERE SC.CID='003'
--思路三
SELECT StuID FROM F0215
WHERE CID IN ('001','003')
GROUP BY StuID
HAVING COUNT(StuID)=2
--思路四(思路三的变体)
SELECT STUID FROM
(
SELECT STUID FROM F0215 WHERE CID = '001'
UNION ALL
SELECT STUID FROM F0215 WHERE CID = '003'
) A
GROUP BY STUID HAVING COUNT(STUID) = 2支持与分享
如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!
相关文章智能推荐
1
SQL每日一题(20230814)
程技2023-08-01
2
SQL每日一题F1021,while循环操作
程技2023-08-01
3
SQL每日一题F1025,复杂逻辑处理
程技2023-08-01
4
SQL每日一题F1028,关联子查询
程技2023-08-01
5
MySQL常用30种SQL查询语句优化方法
程技2023-08-01
随机文章随机推荐
樊笼










