我有一个包含这种格式数据的表。
+-----+----------+------------+------------+
| id | grade_id | student_id | subject_id |
+-----+----------+------------+------------+
| 249 | 1 | 27 | 1 |
| 250 | 1 | 27 | 2 |
| 251 | 1 | 27 | 4 |
| 252 | 1 | 28 | 1 |
| 253 | 1 | 28 | 2 |
| 254 | 1 | 28 | 4 |
| 255 | 1 | 29 | 1 |
| 256 | 2 | 29 | 2 |
| 257 | 3 | 29 | 4 |
+-----+----------+------------+------------+
我需要所有 subject_id 的grade_id = 1 的student_id,我将使用该查询来获取student_id。
我需要查询的结果应该是这样的?
学生 ID
27
28
最佳答案
在 MySQL 中:
从表中选择学生 ID,其中学生 ID 不存在(从表中选择学生 ID,其中年级 ID != 1)
在 Django 中:
from django.db.models import Q
not_eligible = Model.objects.all().filter(~Q(grade_id = 1))
.values('student_id').distinct()
eligible = Model.objects.all().filter(~Q(student_id_in = not_eligible))
.values('student_id').distinct())
# eligible -> all student_id
关于mysql - 如何从具有特定条件的表中选择不同的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33406735/