关于博客文章、分类、标签的mysql查询问题

最近在做一个mysql+nodeJS的博客,只是用来练手,由于PHP不会,所以用node作为后台语音开发
遇到的查询问题是
文章和分类是一对一的
文章和标签是一对多的
请问这个mysql怎么写,在下是前端,会点简单的mysql,所以就当学习这个吧,最好能丢出sql语句我琢磨琢磨

表结构如下图
图片描述

图片来源于图片来源,我就没有去做,只是合并了下

跪求各位的文章详情查询的sql语句

阅读 5.2k
3 个回答

用关联查询,或者in子查询
首先你要提供你的查询需求,要查什么,查询条件是什么,查询结果是什么。讲清楚场景才能写出SQL来

我试着写了一下,效率可能低了一点,不过功能应该是对的

CREATE TABLE `articles` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `title` varchar(50) NOT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;

CREATE TABLE `tags` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `name` varchar(50) NOT NULL,
    PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ;

CREATE TABLE `tag_links` (
    `aid` int(11) NOT NULL,
    `tid` int(11) NOT NULL,
    PRIMARY KEY (`aid`,`tid`)
);

-- insert demo data

INSERT INTO `articles` (`id`,`title`) VALUES (1,'xxx'),(2,'a'),(3,'b');
INSERT INTO `tags` (`id`,`name`) VALUES (1,'php'),(2,'java'),(3,'sql');

INSERT INTO `tag_links` (`aid`,`tid`) VALUES (1,2),(1,3);
INSERT INTO `tag_links` (`aid`,`tid`) VALUES (2,1),(2,3);

-- query statement

SELECT a.title as 'title',
(
    SELECT GROUP_CONCAT(t.name,' ') FROM `tags` t 
    LEFT JOIN `tag_links` tl 
    ON t.id=tl.tid 
    WHERE tl.aid=a.id
) as 'tags'
FROM `articles` a;

先查出文章记录,在查对应的标签关联,然后查找标签关联对应标签表的记录

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏