使用逗号分隔的字符串加入字段

时间:2013-01-31 06:40:48

标签: mysql

我想基于一个字段中包含的逗号分隔键来连接两个表。因此,这两个表是'topic'和'link',主题包含字段'links',其中包含表链接中记录的逗号分隔ID。这可能吗?

2 个答案:

答案 0 :(得分:3)

虽然你应该对你的问题更具描述性(最好有表定义,样本数据,所需的输出),但@AaronBertrand今天早些时候向我展示了如何在逗号分隔列表上连接表:

SELECT DISTINCT T.Id, L.Link 
FROM Topic T
   JOIN Link L ON CONCAT(',',T.Links,',') LIKE CONCAT('%', L.Link,'%')

以下是一些浓缩的SQL Fiddle作为示例。

祝你好运。

答案 1 :(得分:0)

谢谢你。在查看了一下后,我决定创建一个名为topic_lnks的第三个表,其中包含主题ID和链接ID的单独字段。这将使连接更容易处理。就我而言,我使用:

if(isset($_POST['submit'])){

        $query = "INSERT INTO topic (topic_pk,title,topic,majors,sub_discipline_fk,author_fk,created)
          VALUES ('','$title','$topic','$majors_string','$sub_discipline','$author_pk',NOW())";
        $result = mysql_query($query, $connection) or die(mysql_error());
        if($result){
            $topic_pk = mysql_insert_id();
        }

        foreach($links as $link){
                    $query_links = "INSERT INTO topic_links (topic_link_pk,topic_fk,link_fk)
          VALUES ('','$topic_pk','$link')";
        $result_links = mysql_query($query_links, $connection) or die(mysql_error());
        }
        if($result_links){
            $message = "- The topic '" . $title . "' has been created";
        }
}

然后我可以查询topic_links表,根据字段'topic_fk'获取链接。