DISTINCT *没有撤回两面性(MYSQL)

时间:2015-04-09 18:12:07

标签: php mysql

我已经完成了一切,以消除数据库上的这种双重性 在选择sectio" Bairros"上的复选框时我用作数组

for($m=0; $m<count($_POST["bairros"]); $m++){// LOOP 1
    $pesquisar=($_POST["bairros"][$m]);
    //Copy bairros(Array) and esporte (POST)
    $query = "SELECT DISTINCT * FROM cadastro WHERE
    (esporte1 = '".$_POST["esportes"]."' OR
    esporte2 = '".$_POST["esportes"]."' OR
    esporte3 = '".$_POST["esportes"]."' OR
    esporte4 = '".$_POST["esportes"]."')
    AND
    (bairro1 = '".$pesquisar."' OR
    bairro2 = '".$pesquisar."' OR
    bairro3 = '".$pesquisar."' OR
    bairro4 = '".$pesquisar."')
    AND
    ativarAparecer='sim' ORDER BY nomeCompleto ASC LIMIT 20";
    $esporte= new consultar();
    $esporte->executa($query);
    //Loops  
    for($l=0; $l<$esporte->nrw; $l++){ //LOOP 2
        echo $esporte->data["nomeCompleto"]."<br />";
        $esporte->proximo();
    } //close LOOP2
} //close LOOP1
  • 详细信息:这个面向函数的对象,我相信我在SQL或MYSQL上做错了什么,也许在那里缺少一些东西。

3 个答案:

答案 0 :(得分:4)

SELECT DISTINCT *

停在那里。 DISTINCT *可以做什么?什么重复?它不能这样做。给它一个字段名称以查看唯一值。

例如

SELECT DISTINCT nomeCompleto

答案 1 :(得分:0)

让我们打破这个局面。 DISTINCT子句将根据所选列返回唯一集。

让我们说你有一张桌子:

a | b | c
=========
1 | 2 | 3
1 | 1 | 3
1 | 2 | 4

现在,如果你SELECT DISTINCT a FROM table,你会得到:

1

但如果你SELECT DISTINCT a, b FROM table,你会得到:

a | b
=====
1 | 2
1 | 1

这是因为{1,2}{1,1}不同,即使a列在这两个集合之间相同。

显然,做SELECT DISTINCT * FROM table会给你原始的表,因为它使用所有三列作为&#34;组合&#34;独特的一套。如果我们将表修改为如下所示:

a | b | c
=========
1 | 2 | 3
1 | 1 | 3
1 | 2 | 4
1 | 2 | 3

然后SELECT DISTINCT * FROM table的结果会给出:

a | b | c
=========
1 | 2 | 3
1 | 1 | 3
1 | 2 | 4

因为{1, 2, 3}的重复结果集。但是,由于大多数表都有自动递增标识符作为主键,因此SELECT *SELECT DISTINCT *之间几乎没有区别。

也许您正在寻找某个专栏的GROUP BY

答案 2 :(得分:0)

我如何在我的脚本中使用GROUP?有几个相同记录的专栏是这个bairro,bairro2,bairro3,bairro4。里面是数字

bairro1 | bairro2 | bairro3 | bairro4
     14 |    14   |   15    | 27
     34 |    15   |   14    | 30
     27 |    45   |   12    | 14