我想从用户表中的“组合-清单”一栏中找到共同的项目:
+----+--------------------+-------------------------------------+
| id | name | following_list |
+----+--------------------+-------------------------------------+
| 9 | User 1 | 26,6,12,10,21,24,19,16 |
| 10 | User 2 | 21,24 |
| 12 | User 3 | 9,20,21,26,30 |
| 16 | User 4 | 6,52,9,10 |
| 19 | User 5 | 9,10,6,24 |
| 21 | User 6 | 9,10,6,12 |
| 24 | User 7 | 9,10,6 |
| 46 | User 8 | 45 |
| 52 | User 9 | 10,12,16,21,19,20,18,17,23,25,24,22 |
+----+--------------------+-------------------------------------+
我希望能够按特定用户补贴的配对数量进行分类。 例如,除第9号与第9号外,我想与所有用户匹配,看看他们共有的“后续清单”栏中哪一个识别器。
I found a way of doing this through the "SET" datatype and some bit trickery:
http://dev.mysql.com/tech-resources/articles/mysql-set-datatype.html#bits
然而,我需要在一份武断的身份证清单中这样做。 我希望这完全可以通过数据库来完成,但这只是我的ague。
EDIT:感谢每个人的帮助。 我仍然很想知道,以轨道为基础的办法能否奏效,但三者合力工作。
SELECT a.following_id, COUNT( c.following_id ) AS matches
FROM following a
LEFT JOIN following b ON b.user_id = a.following_id
LEFT JOIN following c ON c.user_id = a.user_id
AND c.following_id = b.following_id
WHERE a.user_id = ?
GROUP BY a.following_id
现在我必须说服我不要过早地优化。