php - 如何编写查询来查找不属于所选字段的记录?

标签 php mysql sql mysqli

我有下面两个数据库表:

类(class)模块表:

CourseId  ModuleId
1         1
1         2
1         3

模块表:

ModuleId ModuleNo   ModuleName                            Credits
1        CHI2513    Systems Strategy                      20
2        CHI2550    Modern Database Applications          20
3        CHI2565    Ecommerce - Business and Technology   20
4        CHT2220    Interactive Systems                   20
5        CHT2520    Advanced Web Programming              20
6        CHI2554    Patent Law                            40

现在我不知道如何执行此操作,但我想要做的是创建查询,它将输出一组记录,其中显示不在所选类(class)中的模块列表。

例如,如果CourseId = 1,那么它应该从查询中输出的模块如下:

4        CHT2220    Interactive Systems                   20
5        CHT2520    Advanced Web Programming              20
6        CHI2554    Patent Law                            40

这是因为正如您在 Course_Module 表中看到的那样,这些模块不属于选择的 CourseId 1

但是如何编写这样的查询呢?下面只是我创建的一个简单查询:

SELECT cm.CourseId, m.ModuleId, m.ModuleNo, m.ModuleName, m.Credits
FROM Course_Module cm
INNER JOIN Module m ON cm.ModuleId = m.ModuleId
WHERE
(CourseId = 1)
ORDER BY ModuleNo 

最佳答案

以下怎么样?

SELECT
    m.*
FROM
    Module m
WHERE
    m.ModuleId NOT IN (
                       SELECT cm.ModuleId
                           FROM Course_Module cm
                       WHERE cm.CourseId = 1
                      );

关于php - 如何编写查询来查找不属于所选字段的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13655929/

相关文章:

php - 将 Javascript 变量传递给 Codeigniter 中的 PHP Controller

python - 将 SQL 查询存储在字典中?

php - 如何更正php mysql查询

sql - 将 SQL SUM 与包含内部 SELECT 的 Case 语句一起使用

php - 我可以用 php 7.2 安装 GD 库吗?

php - 检查电子邮件内容是纯文本还是 HTML - PHP

php - PHP 中的数字反转未显示正确的输出

mysql - SQL-Query 在应该返回一个的地方返回 2 个返回值

php - 如何将已上传的同一个文件导入到mysql中?

sql - 在 SQL 中,为什么这个 JOIN 会两次返回键列?