我有一个多对多的桌子,比如
flyer tagged tags
-----------------------------------
id tid id
flyer_name fid tag_name
我目前在 tagged 表工作,我想做的是选择所有相关结果并按匹配数排序。
可以说我有记录...表已标记
tid fid
---------
80 1
80 2
80 3
2 1
2 2
2 6
1 3
1 4
30 5
30 6
首先,我想选择所有 tid 为 2 或 80 的传单,然后按 fid 分组所以它将返回 fid 1,2,3
现在从 1,2,3 开始。我想通过在字段 tid if 2 或 80 上使用 CASE 然后 +1 到变量 'matches' 来遍历所有这些,然后按匹配数对所有 fid 进行排序,还返回属于传单的所有标签
Desired result
fid matches tags
1 2 80,2 #matched with tags 80,2
2 2 80,2 #matched with tags 80,2
3 1 80,1 #matched with tags 80
6 1 2,30 #matched with tags 2
这是我当前的 mysql 代码,它不起作用,我试图尽可能简单地提出问题,如果您认为我应该提供更多信息,请告诉我。谢谢 !
SELECT fid , tid , MATCHES FROM leon_tagged
WHERE tid IN (2,80)
CASE tid
WHEN '2' then 1
WHEN '80' then 1
ELSE 0 END AS MATCHES
GROUP BY fid
ORDER BY MATCHES