1

データベースからすべての列を読み取るプログラムを作成しようとしていますが、これらの列の年齢が同じ場合、複数回表示されます (たとえば、2 つの行が同じ年齢 15 の場合、これらの 2 つの行を表示する必要があります)。

これは私が作成しようとしたコードです:

include('dbcon_3.php');  

if ( $mysqli->connect_errno ) {
    printf("Connect failed: %s\n", $mysqli->connect_error);
    exit();
}

$sql = "SELECT * FROM table2 GROUP BY Age HAVING ( COUNT( Age ) > 1 )";
$result = $mysqli->query( $sql );
if ( $result->num_rows > 0 ) {
  while ( $row = $result->fetch_row() ) {
     for ( $j = 0; $j <= count( $row ) - 1; $j++ ) {
        echo  $row[$j];
     }
  }
} else if ( $result->num_rows == 0 ) {
   echo "Not found";
}

このコードの結果は、表示される行の 1 つにすぎません (3 つの行でテストしました。1 つの行は 16 歳、2 つは 15 歳でした。最後の 2 つの行からは、1 つだけが画面に表示されました)。

前もって感謝します。

4

3 に答える 3

3

GROUP BYあなたのヒットを崩壊させます。次のように問題を解決できます。

SELECT * FROM table2 WHERE Age IN 
(SELECT Age from table2 GROUP BY Age HAVING (COUNT(Age) > 1))
于 2013-09-13T05:16:13.523 に答える
1

サブクエリで行うこともできます

SELECT table2.* FROM table2 
JOIN
(SELECT age FROM table2 GROUP BY Age HAVING (COUNT(Age) > 1)) AS temp 
ON temp.age=table2.age
于 2013-09-13T05:21:02.090 に答える