将动态循环查询的值存储到单个字段(不是php数组)

时间:2016-07-01 07:08:59

标签: php mysql

我有一个通过查询特定网站的API获得的关键字表,结构如下:

keyword1    value
keyword1    value2
keyword1    value3
keyword1    value4
keyword2    value5
keyword2    value6

这持续350,000行。

我尝试过将PHP用于&虽然循环但我能得到的最好(我的经验有限)如下:

keyword1    {terrible php array dump of correct corresponding values}
keyword2    {terrible php array dump of correct corresponding values}
keyword3    {terrible php array dump of correct corresponding values}

我真的想要这样的事情:

keyword1    value, value1, value2, value3...
keyword2    valuex, valuex+1 ...
keyword3    valuey, valuey+1 ...

最终,它实际上只是在现有数据中进行转换,并在单个MySQL逗号分隔字段中存储与唯一关键字匹配的列。

我的想法是(我知道语法是混合的和不正确的):

$keywords = select distinct original_kw from tbl_keyword;

foreach( $keywords as $keyword) {
    $result = select * from tbl_keyword where original_kw = $keyword
        foreach( $result as $answer){
            update new_tbl_keyword 
                set $original_kw = $keyword 
                set $suggested_kw = groupconcatenate($result,", ",$answer);
        }
}

最好是用PHP还是单个MySQL脚本进行操作超出我的范围,我不是开发人员,但是我已经使用过这个网站来获取尽可能多的东西。这个网站太棒了!我已经设法查询API,传递身份验证标头并解释所有JSON以实现这一点,现在我卡住了&迫切需要帮助!

1 个答案:

答案 0 :(得分:1)

如果您已将数据存储在SQL表中,则只需编写:

SELECT keyword, GROUP_CONCAT(value)
FROM table_name
GROUP BY keyword

你得到:

keyword1    value, value1, value2, value3...
keyword2    value5, value6 ...