MySql查询 - 加入

时间:2014-08-02 19:38:28

标签: mysql sql

我有两张桌子:

articles
id int auto_increment
title VARCHAR
desc VARCHAR
etc

tags
id int auto_increment
articleId int
tag Varchar

这个想法是文章有多个标签。

我想在一个以逗号或其他内容分隔的字段中选择包含所有标签的文章。

结果如下:

title    |   desc    |      tags       |
---------------------------------------
article1 |   desc1   | Tech,Science    |
article2 |   desc2   | Drama,Tv,Funny  |

我正在寻求查询帮助。

这就是我所拥有的...我知道这不对......我猜我需要某种加入和连接?

SELECT * 
FROM portfolio.articles, portfolio.tags 
WHERE articles.id = tags.articleId;

任何帮助都会很棒!

2 个答案:

答案 0 :(得分:1)

尝试:

SELECT a.title, a.desc, group_concat(t.tag) as tags
  FROM portfolio.articles a
  join portfolio.tags t
    on a.id = t.articleId
 group by a.title, a.desc

您想使用group_concat函数,它基本上是垂直连接。

答案 1 :(得分:0)

您需要使用group_concat函数

所以你会有这样的事情:

select
a.title,
a.desc,
group_concat(t.tag) 

from articles a
inner join tags t on a.id = t.articleId

group by 
a.title, a.desc

这将使用逗号

分隔每个标记