我有两张桌子 http://sqlfiddle.com/#!3/a11afc 我只想要表1中不在表2中的那些行或只需要表2中具有表1中最大值的行。 最终的CourseReg表应该如下所示。 'CS-101',75 'CS-103',85 'CS-104',78 查询后,CourseReg只有EqualCouse Plus中不存在的那些行,它们在CourseReg中具有最大值的EqualCourse行。希望它能澄清我的问题
答案 0 :(得分:0)
以下......
DELETE FROM dbo.CourseReg
WHERE (SELECT COUNT(id)
FROM dbo.EqualCourse
WHERE dbo.EqualCourse.courseCode = dbo.CourseReg.courseCode) = 0;
答案 1 :(得分:0)
如果您只想要表1中那些不在表2中的行
select * from CourseReg where coursecode not in (select coursecode from EqualCourse)
答案 2 :(得分:0)
以下是您可能正在寻找的答案。
SELECT C.courseCode AS courseCode, C.totalMarksobtained AS marks
FROM [CourseReg] C left join [EqualCourse] E ON C.CourseCode=E.CourseCode
WHERE E.coursecode IS NULL
UNION
SELECT coursecode, totalmarksobtained AS marks
FROM [CourseReg] RIGHT JOIN
(SELECT Max(totalmarksobtained) maxmarks
FROM [CourseReg] C inner join [EqualCourse] E ON C.CourseCode=E.CourseCode) MXMS ON MXMS.maxmarks = Coursereg.totalmarksobtained
答案 3 :(得分:0)
更新:如果您需要根据规则选择结果集,可以
WITH non_existent_courses AS
(
SELECT r.courseCode, r.totalMarksObtained
FROM CourseReg r LEFT JOIN EqualCourse e
ON r.courseCode = e.courseCode
WHERE e.courseCode IS NULL
), max_marks_course AS
(
SELECT TOP 1 r.courseCode, r.totalMarksObtained
FROM CourseReg r JOIN EqualCourse e
ON r.courseCode = e.courseCode
ORDER BY totalMarksObtained DESC
)
SELECT *
FROM non_existent_courses
UNION
SELECT *
FROM max_marks_course
输出:
| COURSECODE | TOTALMARKSOBTAINED | |------------|--------------------| | CS-101 | 75 | | CS-103 | 85 | | CS-104 | 78 |
这是 SQLFiddle 演示