我有两个表,学生表和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 |约翰
答案 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(),已被删除。