我是使用PHP while循环还是SQL group_concat

时间:2017-12-26 00:06:59

标签: php mysql sql pdo

两个代码都执行相同的作业,但哪个代码更好用,何时使用?

PHP方法

$names = [];
$Query = "SELECT DISTINCT name FROM names";
$stmt = $conn->prepare($Query);
$stmt->execute();
while ($name = $stmt->fetch()) {
    $names[] = $name['epic'];
}
$names = implode(',', $names);

SQL方法

$Query = "SELECT GROUP_CONCAT(DISTINCT name) AS names FROM names";
$stmt = $conn->prepare($Query);
$stmt->execute();
$row = $stmt->fetch();
$names = $row['names'];

1 个答案:

答案 0 :(得分:2)

这取决于。 GROUP_CONCAT()具有group_concat_max_len系统选项强加的限制,默认情况下其长度为1024(more info)。

此外,它将连接非空值,您可能希望以不同的方式处理它们,而不是忽略它们。