仅选择必须存在于两个表上并仅返回单行的数据

时间:2017-02-25 06:17:11

标签: php mysql codeigniter

我有两个表,学生表和student_subject。我想选择student_id出现在student_subject表上的学生,我想只返回一行。

表学生

| student_id |姓名
| 1 |约翰
| 2 |詹姆斯

表科目

id | subject_id | student_id | subject_name
1 | 2 | 1 |数学
2 | 1 | 1 |中文
3 | 3 | 1 |生物学

我的代码

$this->db->select('*')
        ->from('students')
        ->where('student_id IN (select student_id from student_subject'));

我想只显示这样的单行: -
| student_id |姓名

| 1 |约翰

3 个答案:

答案 0 :(得分:2)

试试这个:

select *
from students s
where exists (
        select 1
        from subjects j
        where s.student_id = j.student_id
        )

答案 1 :(得分:1)

您需要使用以下查询:

$this->db->select('students.student_id, students.name')
    ->from('students')
    ->join('subjects', 'students.id = subjects.student_id')
    ->group_by('students.id');

答案 2 :(得分:0)

试试这个。使用

$this->db->select('students.student_id as sid,students.name as sname',false);
$this->db->from('students s1');
$this->db->join('subjects s2','s1.student_id = s2.student_id');
$this->db->groupby('s1.student_id');

使用别名等访问

$行级别> SID,$行级别> SNAME

注意: - group_by()以前称为groupby(),已被删除。