我已经做了一切来消除数据库上的这种双重性在我用作阵列的"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