首页 > 解决方案 > MySQL - 根据另一个表的列数从一个表中获取记录

问题描述

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

表 1:students,表 2 documentsstudentPK isuser_iddocumentPK is document_id,并且documenttable 也有user_iddocument表的列approved可以包含是或否。所以这两个表由user_id

我怎样才能编写一个 MySQL 查询(或者更好,以 Code Igniter 的 Active Record 样式),它可以列出所有至少有 1 个未批准文档的学生?

标签: phpmysqlcodeigniteractiverecord

解决方案


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);

查询正常,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);

+----------------+--------------------+------------ --------+ | 学生号 | 学生名字 | 学生姓氏 | +----------------+--------------------+------------ --------+ | 1 | F1 | L1 | +----------------+--------------------+------------ --------+ 1 行(0.02 秒)


推荐阅读