2017-01-01 27 views
-2

我想要SELECT总数页面赞我与数据库中的其他用户有共同之处。选择我喜欢的页面总数与其他用户的共同点

当我想这种说法......

SELECT 
    l.item_id, 
    l.uid, 
    COUNT(l.item_id) 
FROM 
    pages_likes l 
WHERE 
    l.uid IN (NOT NULL, 544) 
GROUP BY 
    l.uid 

...仅输出网页喜欢我自己的总数和我的用户ID的一个单独的记录。在这个例子中,我的用户名是544

因此,我只获得一条记录,而不是像我预期的那样应该显示不同的用户标识(名为uid)和不同总数的喜欢的多个用户记录。

因此,我的WHERE-条件显然是错误的,我会很感激有什么其他可能性来解决这个问题。

page_likes结构: iditem_iduiddate

+0

'l.uid IN(NOT NULL,544)'没有任何意义。 NOT NULL不是您可以比较的特定值。 – Barmar

+0

你究竟是什么意思? @GurwinderSingh我解释说,我需要所有页面喜欢与其他用户共同使用,但我不知道如何编写包含我自己的用户标识的SELECT语句,并告诉其他用户标识必须不是空白。这就是我使用NOT NULL的原因。 – AlexioVay

+0

“我喜欢与所有其他用户共同点”是什么意思?是不是所有用户喜欢的项目数量? – Barmar

回答

1

试试这个:

SELECT 
    l1.uid, 
    COUNT(*) AS common_likes 
FROM 
    page_likes AS l1 
JOIN page_likes AS l2 ON l1.item_id = l2.item_id 
WHERE 
    l1.uid != 544 
AND l2.uid = 544 
GROUP BY l1.uid 
ORDER BY 
    common_likes DESC 

此加入page_likes表的子集与自身。其中一个子集是其他用户喜欢的一个子集,另一个是你喜欢的子集。然后它计算每个其他用户的配对数量。

+0

通过这个声明,我得到一个用户id的单个记录,其中common_likes的数量接近1000.但是当我访问这个用户的配置文件时,我只有4个常见的喜欢,以检查它是否属实。还有更多的用户,我有共同的喜欢。 – AlexioVay

+0

对不起,我忘了'GROUP BY'。 – Barmar

+0

我认为这个解决方案很聪明的加入同一张桌子,但有些东西需要改变。看起来,我得到**的特定用户**总数而不是**常见喜欢**。你的'JOIN'('AS ll2',而不是'AS l2')后面也有一个错字。 – AlexioVay

相关问题