0
<?php
include('includes/connection.php');

$query = 'select a, c from b';
$result = mysql_query($query, $con);
$num_rows = mysql_num_rows($result);

if ($num_rows > 0)
{
    echo '<p>';
    while($row = mysql_fetch_array($result))
    {
         echo "{$row["a"]}";
    }
    echo '</p>';
}
?>

表“b”在“a”列中有这些值

Table b
-------
a     c
-     -
1     a
1     a1
1     a2
2     a
3     b
4     b

我希望能够在我的 while 循环中确定返回的行是否重复并丢弃它。在这种情况下,我只希望数字 1 出现一次。我该怎么做呢?

4

2 回答 2

2

您应该在 sql 端执行此操作,因为 db 服务器经过优化以运行此类操作,而不是在 php 端使用迭代和验证。在您的 sql 选择中使用 DISTINCT。

于 2012-11-01T03:35:36.173 回答
0

我不认为 distinct 对你的情况有帮助。原因是 distinct 对具有完全相同行的元素起作用,但在你的情况下,即使你的列 a 与你的列 c 不匹配

a 和 c 上的不同将为 1 提供 3 行(在一列中)。

我可能做得过火了,但这是我想出的

依次通过a

  FOR x IN (SELECT a from table)

SELECT *   FROM (SELECT ROW_NUMBER () OVER (ORDER BY user_id) user_row_no, A.* FROM table A WHERE A.a=x.a )  


END LOOP;
于 2012-11-01T04:34:25.107 回答