这是我第一次使用没有输入的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
副本的结果。还是我错了?
谢谢。
如果定义为具有相同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
}
请考虑使用mysql或PDO。一个好的起点:mysqli或PDO
我不确定我是否完全理解这个问题,但是如果您想显示值和计数,其中存在多个行,所有三个字段的值相同,您可能需要像…
SELECT FIELD_A, FIELD_B, FIELD_C, COUNT(*)
FROM MY_TABLE
GROUP BY FIELD_A, FIELD_B, FIELD_C
HAVING COUNT(*) > 1;