MySQL - 根据另一个表的列计数从一个表中获取记录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL - 根据另一个表的列计数从一个表中获取记录相关的知识,希望对你有一定的参考价值。

我有一张名为students的桌子和一张名为documents的桌子。每个学生可以在documents表中包含任意数量的文档条目,但也可能没有文档条目。有些文件可能已获批准,有些则未获批准。

表1:students,表2 documentsstudent PK是user_iddocument PK是document_id,而document表也有user_iddocument表有列approved,可以包含是或否。所以这两个表由user_id链接

如何编写mysql查询(甚至更好,在Code Igniter的Active Record样式中),可以列出所有至少有1个未批准文档的学生?

答案
mysql> create table students (student_number int, student_first_name char(25), student_Last_name char(25));

查询正常,0行受影响(0.34秒)

mysql> create table documents (student_number int, document_name char(25), approved bool);

查询OK,0行受影响(0.32秒)

mysql> insert into students values (1,"F1","L1"),(2,"F2","L2"),(3,"F3","L3");

查询正常,3行受影响(0.19秒)记录:3重复:0警告:0

mysql> insert into documents values (1,"D1",0),(1,"D2",1),(3,"D3",1);

查询正常,3行受影响(0.16秒)记录:3次重复:0警告:0

mysql> select * from students where student_number in (select student_number from documents where !approved);

+ ---------------- + -------------------- + ----------- -------- + | student_number | student_first_name | student_Last_name | + ---------------- + -------------------- + ----------- -------- + | 1 | F1 | L1 | + ---------------- + -------------------- + ----------- -------- + 1排(0.02秒)

另一答案
select distinct students.name from students join documents on 
students.user_id=documents.user_id where documents.user_id is No

以上是关于MySQL - 根据另一个表的列计数从一个表中获取记录的主要内容,如果未能解决你的问题,请参考以下文章

如何从一个表中获取包含另一表的详细信息的记录计数

如何从一个表中过滤出其 id 出现在另一个表的列中的记录

如何使用计数查询来(自动)更新表中的列

MySQL:如何根据从另一个表中选择的值填充现有表的新列[关闭]

MySQL 从一个表中获取由另一个表的外键关联的内容

Mysql从一个表中获取基于另一个表的结果