SQL查询的逻辑
我的查询在逻辑上不起作用。我正在尝试获取学习任何AutoCAD课程但未学习任何Revit课程的学生的列表。我的查询结构如下:SQL查询的逻辑,sql,ms-access,Sql,Ms Access,我的查询在逻辑上不起作用。我正在尝试获取学习任何AutoCAD课程但未学习任何Revit课程的学生的列表。我的查询结构如下: Select * From StudentData Where (CourseName LIKE 'AutoCAD%') AND NOT EXISTS (Select * From StudentData Where (CourseName LIKE 'Revit%')); 与EXISTS相反,会给出学习AutoCAD+Revit的人员列表,但NOT不会返回任何值
Select * From StudentData
Where (CourseName LIKE 'AutoCAD%')
AND NOT EXISTS (Select * From StudentData Where (CourseName LIKE 'Revit%'));
与EXISTS相反,会给出学习AutoCAD+Revit的人员列表,但NOT不会返回任何值
有什么想法吗?试试这个:
Select
*
From
StudentData sd
Where
(
CourseName LIKE 'AutoCAD%'
)
AND NOT EXISTS
(
Select
*
From
StudentData sd2
Where
sd2.CourseName LIKE 'Revit%'
AND sd.StudentName = sd2.StudentName
)
您错过了两个表中的id比较。由于至少会有一名学生参加“Revit%”课程,不存在
条件对于所有学生都将始终失败
*****演示(带有示例数据)*****
试试这个:
Select
*
From
StudentData sd
Where
(
CourseName LIKE 'AutoCAD%'
)
AND NOT EXISTS
(
Select
*
From
StudentData sd2
Where
sd2.CourseName LIKE 'Revit%'
AND sd.StudentName = sd2.StudentName
)
您错过了两个表中的id比较。由于至少会有一名学生参加“Revit%”课程,不存在
条件对于所有学生都将始终失败
*****演示(带有示例数据)*****
在中不要使用
。尝试:
SELECT *
FROM StudentData
WHERE (CourseName LIKE 'AutoCAD%')
AND CourseName NOT IN (
SELECT CourseName
FROM StudentData
WHERE (CourseName LIKE 'Revit%')
)
在
中不要使用。尝试:
SELECT *
FROM StudentData
WHERE (CourseName LIKE 'AutoCAD%')
AND CourseName NOT IN (
SELECT CourseName
FROM StudentData
WHERE (CourseName LIKE 'Revit%')
)
请试试下面的一个
Select * From StudentData sd1
Where CourseName LIKE 'AutoCAD%'
AND NOT EXIST (SELECT * FROM From StudentData sd2 WHERE sd1.Id = sd2.Id and CourseName LIKE 'Revit%')
请试试下面的一个
Select * From StudentData sd1
Where CourseName LIKE 'AutoCAD%'
AND NOT EXIST (SELECT * FROM From StudentData sd2 WHERE sd1.Id = sd2.Id and CourseName LIKE 'Revit%')
此查询没有多大意义,父查询与相关子查询之间没有明显的链接。因此,此查询将在同一行上测试这两个条件,因此所有AutoCAD%
课程都将返回,而与其他课程的学生无关。此查询没有多大意义,父查询与相关子查询之间没有明显的链接。因此,此查询将在同一行上测试这两个条件,因此,将返回所有AutoCAD%
课程,而不考虑是否有其他课程的学生。此查询不返回任何记录。ID是主键。我已确认样本数据中有学生学习过autocad,但没有学习revit。您能否共享创建表语法和少量样本插入值?我已在回答样本数据时添加了sqlfiddle链接。请检查提供的示例数据。更新的查询和演示链接。由于同一用户的id也不同,所以必须使用StudentName进行比较。此查询不返回任何记录。ID是主键。我已确认样本数据中有学生学习过autocad,但没有学习revit。您能否共享创建表语法和少量样本插入值?我已在回答样本数据时添加了sqlfiddle链接。请检查提供的示例数据。更新的查询和演示链接。由于同一用户的id也不同,所以必须使用studentName进行比较