Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL查询的逻辑_Sql_Ms Access - Fatal编程技术网

SQL查询的逻辑

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不会返回任何值

我的查询在逻辑上不起作用。我正在尝试获取学习任何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 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进行比较