MySQL 自动删除重复行

MySQL automaticly delete duplicate row

我想显示来自下面函数的所有数据,但是每当调用该函数时,如果有重复项,MySQL 仅 returns 一行。我的 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 截断重复行的情况下显示 ALL 结果?

您正在使用 GROUP BY 查询,该查询只会 return 一个结果,并且会删除重复项。如果您尝试对结果进行排序,请使用 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

上的信息页面

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

给定值的一行