所以,我有一个特定的查询需要微调一下。 项目需求有些变化,我不确定如何处理。
我有3个表 - 一个主表,一个“标签”表,然后是用于将标签链接到主条目的链接表。 这个问题在于给这种链接赋予了一个权重,并且这个权重用于统计与主表中特定名称条目相关联的标签的总权重。简而言之,一个主条目可能有多个标签,每个标签具有不同的权重。当前查询会对所有标签进行加权求和,并按所有标签的总和排序。
我有3个表 - 一个主表,一个“标签”表,然后是用于将标签链接到主条目的链接表。 这个问题在于给这种链接赋予了一个权重,并且这个权重用于统计与主表中特定名称条目相关联的标签的总权重。简而言之,一个主条目可能有多个标签,每个标签具有不同的权重。当前查询会对所有标签进行加权求和,并按所有标签的总和排序。
UID | Name
-----------------
123 | Robert
UID | Tag_Name
-----------------
1 | Name_One
2 | Name_Two
Tag_ID | Name_ID | Weight
-----------------------------
2 | Name_One | 2
1 | Name_Two | 3
1 | Name_One | 5
目前,我已经建立了这个,可以很好地实现匹配2,1字符串中的标签ID:
SELECT person.id,
SUM(linkage.weight) AS total_weight
FROM (person)
INNER JOIN linked_tags AS linkage
ON linkage.track_id = person.id AND linkage.tag_id IN (2,1)
GROUP BY person.id
HAVING COUNT(DISTINCT linkage.tag_id)=1
ORDER BY total_weight DESC
我希望将其扩展到另一个用途。目前,作为字符串传递的标签ID是减法的。它仅在某个人的ID存在两个标签ID时找到匹配项。如果我想要传递另一个ID字符串,在其中任何一个人的ID与该字符串中的任何标签ID相匹配,然后跟随当前的减法ID字符串,再加上这些标签的权重,我该如何做?