2015-05-28 25 views
-1

我想要显示从下面的函数中的所有数据,但只要调用函数时,MySQL只返回如果有重复一行。我的SQL查询有什么问题?MySQL的全自动删除重复的行

$sql_response1 = "SELECT * 
        FROM ".TABLE_PREFIX."tests_answers A, ".TABLE_PREFIX."tests_results R, ".TABLE_PREFIX."members M 
        WHERE A.question_id=".$q_id." AND R.result_id=A.result_id AND R.final_score<>'' AND R.test_id=".$_GET['tid']." AND M.member_id =A.member_id AND M.member_id IN ($in_text) 
        GROUP BY A.answer ORDER BY A.answer"; 

      $result_responsed = mysql_query($sql_response1, $db); 

       while ($row_answer = mysql_fetch_array($result_responsed)) { 

        $x++; 

        $response_member = $row_answer['first_name']; 
        $response_answer = $row_answer['answer']; 
        $response_department = $row_answer['department_name']; 

       $x--; 
        $objPHPExcel->getActiveSheet()->setCellValue(A.$x, $response_answer.' '.'('.$response_member.' - '.$response_department.')'); 
        $x++; 
       } 

假设列result_id具有价值的两个实例,只有一行将被退回。如何显示全部没有MySQL截断重复行的结果?

+3

您认为“GROUP BY”有什么作用? –

+0

我明白了..它会影响重复吗?我尝试删除它 – airi

+0

您的问题描述不够清楚,无法理解实际问题。你想只显示表格中的不同记录吗?或者在显示记录时,如果遇到重复记录,您会立即想要执行删除查询以从表中删除该记录? – spiderman

回答

2

您的问题是GROUP BY组一起 - 基本上,崩溃 - 由共同的指定值的所有行。在这种情况下,这意味着对于A.answer,它将只显示具有给定值的一行。

1

您使用的是GROUP BY查询将返回结果只有一个,它会删除重复。如果您尝试使用ORDER BY对结果进行排序,而不使用GROUP BY

$sql_response1 = "SELECT * 
        FROM ".TABLE_PREFIX."tests_answers A, ".TABLE_PREFIX."tests_results R, ".TABLE_PREFIX."members M 
        WHERE A.question_id=".$q_id." AND R.result_id=A.result_id AND R.final_score<>'' AND R.test_id=".$_GET['tid']." AND M.member_id =A.member_id AND M.member_id IN ($in_text) 
        ORDER BY A.answer"; 

由功能对本集团的更多背景信息,请查阅信息页面上W3Schools