mysql - 类似记录的递归查询

问题描述 投票:1回答:2

我有两个表格,结构如下:

create table article (
id    int         NOT NULL AUTO_INCREMENT PRIMARY KEY,
title varchar(50) NOT NULL,
text  text,
date  timestamp   NOT NULL default CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 AUTO_INCREMENT=1;

create table article_relate (
article_id_1  int NOT NULL,
article_id_2  int NOT NULL
);

表“文章”中的示例记录

id            title
--------------------------------------
1             About Ferrari
2             About Lamborghini
3             About my friends
4             About my kitchen

在第二个表 - “article_relates”中,我描述了第一个表中类似主题记录的关系。

article_id_1       article_id_2
-----------------------------------
    1                  2
    2                  1

当我添加下一篇文章时,我会将它链接到我所知道的关于相同主题的第一篇文章。

Insert into article (id, title) values (5, 'About Maserati'); 以及id = 2的类似文章的链接 Insert into article_relate (article_id_1, article_id_2) values (5, 2); Insert into article_relate (article_id_1, article_id_2) values (2, 5);

现在,我想向数据库发送一个查询,以获取与文章有关的id = 5相关的所有条目。此外,关于id = 2的文章与之关联。此查询的结果应该是id = 5,2和1的记录

应该构建什么查询才能获得此效果?

你能帮助我吗?

mysql recursive-query
2个回答
0
投票

您可以简单地使用带有内部选择查询的选择。

SELECT article.id,article.name FROM article WHERE article.id IN (SELECT article_id_2 from article_relate where article_id_1 = 5);

0
投票

听起来像一个JOIN条款:

SELECT article.id,
       article.name,
       article_relate.id AS article_relate_id
FROM article
LEFT JOIN article_relates ON article.id = article_relate.article_id_1
OR article.id = article_related
WHERE article.id = 5

将列出文章ID为5的所有相关文章。这对您有帮助吗?

关于加入mysql - https://dev.mysql.com/doc/refman/8.0/en/join.html

© www.soinside.com 2019 - 2024. All rights reserved.