虽然循环不起作用,但在使用分组依据时仅显示一条记录


while loop not working only displaying one record when useing group by

我有一个表(MySQL),其中的项目可能重复(第 x 行的room_numbermenu_probelm与第 y 行的room_numbermenu_probelm相同)。 如果 y 行是第 x 行的副本,我试图只显示第 y 行。 该表有 4 行,具有相同的room_numbermenu_probelm值,但 col3 (notes ) 不同。出于某种原因,它向我显示了第一个重复行(y),但没有显示其他两个。

这是我的代码:

$query_Recordset1 = "SELECT *, count(*) FROM damage GROUP BY room_number, menu_probelm HAVING count(*) > 1 ";
$Recordset1 = mysql_query($query_Recordset1, $hk) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);

这是我表格中的 while 语句:

<table width="80%" border="0" cellspacing="0" cellpadding="0">
    <tr>
      <th align="left" valign="top" scope="col">Record Number</th>
      <th align="left" valign="top" scope="col">Room Number</th>
      <th align="left" valign="top" scope="col">Room Number</th>
      <th align="left" valign="top" scope="col">Error Found </th>
      <th align="left" valign="top" scope="col">Delete</th>
    </tr>
<?php do { ?>
    <tr>
      <td align="left" valign="top"><a href="#"><img src="../images/error2.png" width="25" height="25" alt="<?php echo $row_Recordset1['rid']; ?>"></a></td>
      <td align="left" valign="top"><?php echo $row_Recordset1['room_number']; ?></td>
      <td align="left" valign="top"><?php echo $row_Recordset1['menu_probelm']; ?></td>
      <td align="left" valign="top"><?php echo $row_Recordset1['notes']; ?></td>
      <td align="left" valign="top"></a><a href="delete.php?rid=<?php echo $row_Recordset1['rid'];?>"><img src="../images/Remove.png" width="25" height="25" alt="Delete Record"></a></td>
    </tr>
<?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?>
    <tr>
      <td colspan="2" align="left" valign="top">&nbsp;</td>
      <td colspan="3" align="left" valign="top">&nbsp;</td>
    </tr>
</table>

这是我的 SQL 表版
|摆脱 (AI) |room_number |menu_problem|注释 |
共有 5 条记录。 其中三个有135号房间,地毯有问题,他们都有不同的音符,它只向我显示前1个记录音符,另外2个,我想要的不是显示第1个记录,而只显示第2和第3个(重复)。我试图将整个表格放在 ACSSI 中,但它看起来一团糟,我尝试了一个 HTML 选项卡,但它不会显示它。

您的 SQL 查询可能存在问题。 您正在尝试在查询中执行SELECT *,该查询要求表中的所有列。 但是,由于您正在执行GROUP BY因此只能SELECT以下列:room_number, menu_probelm 和每个组的COUNT

请尝试以下查询:

SELECT room_number, menu_probelm, count(*) AS 'frequency'
FROM damage
GROUP BY room_number, menu_probelm
HAVING frequency > 1;

您无法SELECT GROUP BY中的所有列的原因是MySQL引擎无法知道它应该为该组选择其他列的哪个值。