我有以下PHP代码,它运行MySQL查询并将结果作为数组返回:
function mysql_resultTo2DAssocArray ( $result) {
$i=0;
$ret = array();
while ($row = mysql_fetch_assoc($result)) {
foreach ($row as $key => $value) {
$ret[$i][$key] = $value;
}
$i++;
}
return ($ret);
}
$compare = mysql_resultTo2DAssocArray(mysql_query("SELECT Temp.School, Temp.Status, Snow.Token FROM Temp
JOIN Snow ON Temp.School = Snow.School"));
结果如下:
Array
(
[0] => Array
(
[School] => School Name 1
[Status] => Delayed Two Hours
[Token] => Token1
)
[1] => Array
(
[School] => School Name 1
[Status] => Delayed Two Hours
[Token] => Token2
)
)
如果Token
项对每个项都相同,是否可以在这些数组中用逗号组合School
项?
有一件事是,全局数组中可能有更多数组,具有不同的School
名称,不应该分组,而是单独使用。基本上,只有在School
相同时才能进行分组。它也可能有两个以上的令牌。
答案 0 :(得分:2)
SELECT Temp.School, Temp.Status, GROUP_CONCAT(Snow.Token) Tokens
FROM Temp JOIN Snow USING (School)
GROUP BY Temp.School
这不完全有效,因为Status
列未汇总或属于GROUP BY
;但MySQL通常允许它(有一个选项可以禁止它,我不记得这个名字)。如果有不同状态值的行,它将任意选择其中一行;你没有说明不同状态会发生什么。