我有一个表(MySQL),其中的项可能重复(第x行的room_number
和menu_probelm
与第y行的room_number
和menu_probelm
相同。我试图只显示行y,如果它是行x的副本。该表有4行,具有相同的room_number
和menu_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"> </td>
<td colspan="3" align="left" valign="top"> </td>
</tr>
</table>
这是我的SQL Tabel
| rid(ai)| room_number | menu_problem |笔记|
共有5条记录。其中三个人有135个有问题地毯的房间,他们都有不同的音符,它只向我显示另外2个记录音符,我想要的是不显示第一个记录而只显示第二个和第三个(重复) 。
我试图将整个表放在ACSSI中,但它看起来一团糟,我尝试了一个HTML表格,但它不会显示它。
答案 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引擎无法知道应该为该组选择的其他列的哪个值。