Php 如何从SQL中获取不同的行

Php 如何从SQL中获取不同的行,php,mysql,sql,codeigniter,Php,Mysql,Sql,Codeigniter,这是我的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 5

这是我的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
我想要的是,通过验证得到所有的结果,\u id和version是更大的值。例如,ID 5,6和9,10具有相同的螺柱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();
我得到的只是最终的max版本

   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

首先查找Max版本,然后获取其数据:

   select * from marks_table a
    where version = (select max(version) from 
                        marks_table where stud_id = a.stud_id);

首先查找Max版本,然后获取其数据:

   select * from marks_table a
    where version = (select max(version) from 
                        marks_table where stud_id = a.stud_id);

我已经修改了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;

我已经修改了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;

尝试从表中获取多行

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

尝试从表中获取多行

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

您是否尝试过
选择DISTICNT(…)…
?尝试以下操作:从表名称中选择不同的列名称,如果您仍在选择ID,则这些列名称将不起作用。请查看所需的输出。要帮助吗,我不明白您真正想要的是什么(((从你的问题ID 5,6,9,10中,没有相同的搜索ID,所以我不明白你的意思。我知道这个问题有点复杂,我的英语很差……无论如何,谢谢。我只想通过验证ID和最大版本结果来搜索。你试过了吗
选择DISTICNT(…)…
?试试这个:选择不同的列名称)从表_name中,如果您仍在选择ID,则该选项将不起作用。请查看所需的输出。想要帮助,我不明白您真正想要的是什么(((从你的问题ID 5,6,9,10没有相同的搜索ID,所以我不明白你的意思我知道这个问题有点复杂,而且我的英语很差…无论如何,谢谢..我只想通过验证ID和最大版本结果来搜索,但是你能将答案改为“版本”而不是“版本ID”吗,如原问题所示?@srini感谢您的回答,但我需要通过验证搜索\u ID而不是stud\u ID。我投了赞成票,但您能否将答案改为“version”而不是“version\u ID”,如原问题所示?@srini感谢您的回答,但我需要通过验证搜索\u ID而不是stud\u ID。