DISTINCT*没有撤回重复性(MYSQL)


DISTINCT * is not withdrawing the duplicity (MYSQL)

我已经做了一切来消除数据库上的这种双重性在我用作阵列的"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方面做得不对,也许那里缺少了一些东西
SELECT DISTINCT *

停在那里。DISTINCT *能做什么?复制什么?它做不到。为其指定一个字段名称以查看唯一值。

例如

SELECT DISTINCT nomeCompleto

让我们来分解一下。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会得到原始表,因为它使用所有三列作为唯一集的"组合"。如果我们把表格修改成这样:

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

因为CCD_ 10的重复结果集。然而,由于大多数表都有一个自动递增的标识符作为主键,因此SELECT *SELECT DISTINCT *之间几乎总是没有区别。

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

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

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