加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL通过标签选择相关对象

发布时间:2020-12-11 23:23:55 所属栏目:MySql教程 来源:网络整理
导读:在显示特定对象的页面上,我需要基于标签显示该对象的相关对象. ′具有最匹配标签的对象应位于顶部.基本上我基本上需要确定每个对象有多少标签与页面上的对象匹配,并显示最佳结果. 我的数据库模式: Table Object------------ id nameTable Tagset-----------

在显示特定对象的页面上,我需要基于标签显示该对象的相关对象. ′具有最匹配标签的对象应位于顶部.基本上我基本上需要确定每个对象有多少标签与页面上的对象匹配,并显示最佳结果.

我的数据库模式:

Table Object
------------
  id
  name


Table Tagset
-------------
  object_id
  tag_id


Table Tag
------------
  id
  name
最佳答案 这应该做您想要的:

SELECT object.name,COUNT(*) AS tag_count
FROM tagset T1
JOIN tagset T2
ON T1.tag_id = T2.tag_id AND T1.object_id != T2.object_id
JOIN object
ON T2.object_id = object.id
WHERE T1.object_id = 1
GROUP BY T2.object_id
ORDER BY COUNT(*) DESC

结果:

'object2',2
'object3',1

使用此测试数据:

CREATE TABLE object (id int NOT NULL,name nvarchar(100) NOT NULL);
INSERT INTO object (id,name) VALUES
(1,'object1'),(2,'object2'),(3,'object3');

CREATE TABLE tagset (object_id int NOT NULL,tag_id int NOT NULL);
INSERT INTO tagset (object_id,tag_id) VALUES
(1,1),(1,2),3),4),5);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读