期望多个结果时正确的SELECT查询

时间:2011-10-10 09:07:37

标签: php mysql

我正在尝试为我的问题提出正确的查询。基本上,如果我这样做,我可能会得到100多个完全相同的结果:

    $query = "SELECT * FROM highway WHERE state  = 'VA'";
    $result = mysql_query($query) or die(mysql_error());
    while ($row = mysql_fetch_array($result)) {
    //code

有了这个,我会得到:

    95
    95
    95
    95 (and on and on...)
    64
    64
    64 (and on and on...)

获得正确的查询是什么:

    95
    64
    66
    81

2 个答案:

答案 0 :(得分:2)

您可以使用DISTINCT关键字:

  

ALLDISTINCT选项指定是否应该有重复的行   回。 ALL(默认值)指定所有匹配的行应该是   返回,包括重复。 DISTINCT指定删除   结果集中的重复行。指定两者都是错误的   选项。 DISTINCTROWDISTINCT的同义词。

所以:

SELECT DISTINCT * FROM highway WHERE state  = 'VA'

但是如果你的结果集在考虑某些列时有重复,那么在我看来你的数据库表可能设计得很糟糕。您是否进一步考虑了normalising他们?

答案 1 :(得分:0)

在查询中使用GROUP BY columname

$query = "SELECT * FROM highway WHERE state  = 'VA' GROUP BY columnameof9596etc.";