这是我第一次在没有输入的情况下使用SELECT
查询。我想检查表格是否有重复。因此,我只需要计算结果。
所以我有这个:
SELECT
`field a`, `field b`, `field c`
FROM
table
WHERE
`a` AND `b` AND `c`
GROUP BY
duplicates
HAVING
COUNT(duplicates) > 1
当结构如下时,会检查表格中是否有重复项:
field a | field b | field c
a b c
a b c
d e f
我怎样才能得到结果?它只是num_rows
还是从查询中得到一个整数作为结果?
通常我使用num_rows
从查询中获取结果:
$query = $db->query("SELECT ...");
$result = $query->num_rows;
if ($result !== 0 ){do something}
num_rows
与结果之间通常应该存在差异,因为如果我使用num_rows
进行计数,它将返回2
因为2具有条件a AND b AND c
所以我会认为上面的查询会返回1
作为1
重复的结果。或者我错了吗?
非常感谢。
答案 0 :(得分:2)
如果您将两个具有相同A,B和C的记录定义为重复,那么您可以使用如下查询:
SELECT A, B, C, COUNT(*) counter
FROM `MYTABLE`
GROUP BY A,B,C
HAVING COUNT(*) > 1
考虑到您的表格中有3个项目,您的结果将是:
A | B | C | counter
---+-----+-----+--------
'a' | 'b' | 'c' | 2
在PHP中获取结果:
while ($row = mysql_fetch_assoc($result)) {
$a = $row['A'];
$b = $row['B'];
$c = $row['C'];
$counter = $row['counter'];
// Do something with your values
}
请考虑使用mysqli或PDO。一个很好的起点:mysqli or PDO
答案 1 :(得分:1)
我不确定我是否完全理解这个问题,但是如果你想要显示多个行存在的值和计数以及所有三个字段的相同值,则可能需要类似......
SELECT FIELD_A, FIELD_B, FIELD_C, COUNT(*)
FROM MY_TABLE
GROUP BY FIELD_A, FIELD_B, FIELD_C
HAVING COUNT(*) > 1;