所以我有一个MySQL表:
Table Data:
id | domain | title | Full Url to Page | ... etc ...
1 | place.com | Place Something | http://place.com/1...
2 | place.com | Place Something Else | http://place.com/2...
3 | place.com | Some Other Place | http://place.com/3...
4 | pets.com | Cats Dogs Oh My | http://pets.com/2....
5 | pets.com | Bird Edition | http://pets.com/3....
我需要(在PHP / JQuery中)是为每个唯一域获取一个id数组。所以我想要的上表的最终输出是:
$finalArray = array('place.com' => array(1, 2, 3), 'pets.com' => array(4, 5));
我目前的解决方案是获取按域排序的所有行,这是MySQL的声明:
SELECT `id`, `domain` FROM `gsort_linkdata` ORDER BY `domain`
返回:
1 | place.com
2 | place.com
3 | place.com
4 | pets.com
5 | pets.com
然后我循环遍历PHP中的行并将它们分解为数组。我更愿意从数据库中提取已经分解的数据。那可能吗?谢谢!
答案 0 :(得分:2)
您可以使用GROUP_CONCAT
:
SELECT GROUP_CONCAT(`id`), `domain` FROM `gsort_linkdata` GROUP BY `domain`
(注意group_concat_max_len。)
但是因为没有办法将数组从MySQL传递给PHP,所以你需要在PHP或JS中拆分生成的字符串,所以我认为你当前的方法更好。你的方法很安全,实际上只是PHP中的一个单行程序,其他任何东西(包括GROUP_CONCAT)都比较复杂。