1

这是我的 SQL 表。在这里我想得到所有

       marks_table
ID  STUD_ID MARKS   VERSION    VERIFICATION_ID
1      50     90       1             2
2      22     50       1             2
3      33     20       1             2
4      10     30       1             2
5      55     50       1             2
6      55     40       2             2
7      20     60       1             2
8      30     90       1             2
9      10     88       1             3
10     10     45       2             3

我想要的是,通过verification_id 获得所有结果,并且版本是更大的值。例如 ID 5,6 和 9,10 具有相同的 stud_id 不同的标记,并且版本也不同。我想从该验证 ID 中获得最大版本结果和所有其他结果。

在 CodeIgniter 中,我使用了以下命令。

$this->db->select('*');
$this->db->from('marks_table');
$this->db->where('version IN (SELECT MAX(version) FROM marks_table)',NULL,FALSE);
$this->db->where('verification_id','2');
$this->db->get();

我得到的只是最终的最大版本

   marks_table
    ID  STUD_ID MARKS   VERSION    VERIFICATION_ID
    6      55     40       2             2

我真正想要的,像这样

       marks_table
ID  STUD_ID MARKS   VERSION    VERIFICATION_ID
1      50     90       1             2
2      22     50       1             2
3      33     20       1             2
4      10     30       1             2
6      55     40       2             2
7      20     60       1             2
8      30     90       1             2
4

3 回答 3

4

首先找到 Max 版本,然后获取它的数据:

   select * from marks_table a
    where version = (select max(version) from 
                        marks_table where stud_id = a.stud_id);
于 2012-07-26T17:33:13.040 回答
0

我已经修改了 srini.venigalla 的答案。感谢他。

  select * from marks_table a
    where version = (select max(version) from 
                        marks_table where stud_id = a.stud_id) AND VERIFICATION_ID = 2;
于 2012-07-27T03:27:56.297 回答
0

尝试从表中获取多行

$this->db->select('*');
$this->db->from('marks_table');
$this->db->where('version IN (SELECT MAX(version) FROM marks_table)',NULL,FALSE);
$this->db->where('verification_id','2');
$this->db->get()->result_array();
于 2012-07-27T08:03:21.887 回答