mysql - 如何根据mysql中的sql条件排除结果?
问题描述
我正在使用 Codeigniter 和 MySQL 创建一个工作申请门户。我有以下表格:
- 作业 - 包含作业列表
- 学生 - 包含学生列表
- jobs_applied - 包含学生申请的工作列表
工作
主键:job_id
.
列:job_id
,job_name
学生
主键:student_id
.
列:student_id
, student_name
,student_email
jobs_applied
主键:jobs_applied_id
.
外键:job_id
, student_id
.
列:job_id
, student_id
, status
,applied_date
在我的应用程序中,当用户申请工作时,我将状态列更改jobs_applied
为“待定”。我想从列表中删除申请的职位。
到目前为止,我正在使用以下查询来列出工作。
SELECT * FROM jobs
我曾尝试使用INNER JOIN
反对jobs_applied
,但我被困在其中。我不知道如何从列表中排除它。我student_id
在我的会话中有。
如何创建一个查询以排除学生申请的工作student_id
作为条件?
解决方案
您想参考特定学生对 jobs_applied 进行 LEFT JOIN,如果没有匹配项,则 jobs_applied.* 将为 NULL,这就是您的 WHERE 条件。
这是一个演示:
mysql> CREATE TABLE `jobs` (
-> `job_id` int NOT NULL,
-> PRIMARY KEY (`job_id`)
-> );
mysql> INSERT INTO `jobs` VALUES (11),(22);
mysql> CREATE TABLE `students` (
-> `student_id` int NOT NULL,
-> PRIMARY KEY (`student_id`)
-> );
mysql> INSERT INTO `students` VALUES (100),(200);
mysql> CREATE TABLE `jobs_applied` (
-> `jobs_applied_id` int NOT NULL,
-> `job_id` int DEFAULT NULL,
-> `student_id` int DEFAULT NULL,
-> `status` int DEFAULT NULL,
-> PRIMARY KEY (`jobs_applied_id`),
-> KEY `job_id` (`job_id`),
-> KEY `student_id` (`student_id`),
-> CONSTRAINT `jobs_applied_ibfk_1` FOREIGN KEY (`job_id`) REFERENCES `jobs` (`job_id`),
-> CONSTRAINT `jobs_applied_ibfk_2` FOREIGN KEY (`student_id`) REFERENCES `students` (`student_id`)
-> );
mysql> INSERT INTO `jobs_applied` VALUES (1,11,100,NULL),(2,22,200,NULL);
学生 100 申请了工作 11,因此他应该在后续查询中只看到工作 22。
mysql> SELECT j.*
-> FROM jobs j LEFT JOIN jobs_applied ap
-> ON j.job_id = ap.job_id AND ap.student_id = 100
-> WHERE ap.job_id IS NULL;
+--------+
| job_id |
+--------+
| 22 |
+--------+
同样,学生 200 申请了工作 22,因此她之后只能看到工作 11。
mysql> SELECT j.*
-> FROM jobs j LEFT JOIN jobs_applied ap
-> ON j.job_id = ap.job_id AND ap.student_id = 200
-> WHERE ap.job_id IS NULL;
+--------+
| job_id |
+--------+
| 11 |
+--------+
推荐阅读
- angular - 单元格编辑器框架无法显示在网格上
- python - 在 Windows 7 中将 python 脚本作为服务启动时出错
- actions-on-google - Dialogflow 函数:无法读取未定义的属性“客户端”
- angular - 禁用按钮每次都不起作用
- wordpress - 特色图片始终显示在自定义帖子模板中
- javascript - 在javascript中按字母顺序对数组及其对象键进行排序
- ruby - 如何使用正则表达式从字符串中提取域部分
- java - 在 Spring Boot 中具有 jar 文件之外的配置文件
- icons - 我在哪里可以找到所有垫子图标的列表——Angular
- c# - 带有来自父数据集的子报告的 RDLC 报告?