0

我有一个查询:

SELECT info.pID, Name, Addr, Phone, GROUP_CONCAT(URL) as URL FROM info, images WHERE info.pID = images.pID AND place='$place';

即使没有找到结果,也会创建一行(如 num_rows 和 js .length 所述),任何想法为什么?这不是一件平常的事情。

JSON结果打印:

[{"0":null,"pID":null,"1":null,"Name":null,"2":null,"Addr":null,"3":null,"Phone":null,"4":null,"URL":null}]
4

2 回答 2

3

这是因为GROUP_CONCAT:所有聚合函数都具有相似的行为,在构建结果集时执行查询并执行 concat。如果没有结果,它将连接 NULL,并添加到其他为空的结果集中。如果一个字段包含一个值(在这种情况下是函数返回的 NULL),则所有其他字段也会显示(显然)。

这解释了 1 行结果,其中所有内容均为空。删除 group_concat,您将不会得到任何结果。想想其他聚合函数COUNT()在相同情况下的表现。
这是所有聚合函数的列表

于 2012-09-11T11:56:35.920 回答
0

在您指定的行中可能还有其他包含数据的列place='$place'

SELECT之前的部分FROM仅过滤您从其余查询中获得的结果。因此,如果FROM info, images WHERE info.pID = images.pID AND place='$place';找到某些东西,您就会得到结果。然后,您过滤结果并仅选择可能为空的特定列,因此您的结果。

于 2012-09-11T11:50:10.260 回答