MySQL自动删除重复行

时间:2015-05-28 02:35:52

标签: php mysql phpexcel

我想显示下面函数的所有数据,但无论何时调用该函数,如果有重复项,MySQL只会返回一行。我的SQL查询有什么问题?

$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有两个值 foo 的实例,只返回一行。如何在没有MySQL截断重复行的情况下显示所有结果?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分: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";

有关GROUP BY功能的更多背景信息,请查看W3Schools

上的信息页面