while循环不工作时只使用group by显示一条记录

时间:2015-03-09 05:26:26

标签: php sql while-loop

我有一个表(MySQL),其中的项可能重复(第x行的room_numbermenu_probelm与第y行的room_numbermenu_probelm相同。我试图只显示行y,如果它是行x的副本。该表有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 Tabel
| rid(ai)| room_number | menu_problem |笔记|
共有5条记录。其中三个人有135个有问题地毯的房间,他们都有不同的音符,它只向我显示另外2个记录音符,我想要的是不显示第一个记录而只显示第二个和第三个(重复) 。 我试图将整个表放在ACSSI中,但它看起来一团糟,我尝试了一个HTML表格,但它不会显示它。

1 个答案:

答案 0 :(得分:0)

您的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中{{1}}所有列的原因是,MySQL引擎无法知道应该为该组选择的其他列的哪个值。