2017-10-14 72 views
1

因此,我从包含SELECT COUNT的简单SELECT语句获取一个表中的数据。MYSQL SELECT包括COUNT在同一个表内参考特定列

SELECT *, 
    (SELECT COUNT(`message_id`) 
    FROM `user_message` 
    WHERE `status_to` = 0 
    ) AS `unread` 
FROM `user_message` 

这里,unread指示来自其他用户的未读消息。但这还不够。我想要的是引用SELECT COUNT到一个特定的列,user_id,在同一个表内:

SELECT *, 
    (SELECT COUNT(`message_id`) 
    FROM `user_message` 
    WHERE `status_to` = 0 AND `user_message`.`user_id` = `user_message`.`user_id` 
    ) AS `unread` 
FROM `user_message` 

..如果是有道理的。我的第二个陈述忽略了这个部分:AND user_message.user_id = user_message.user_id,并为每个user_id给出了相同的结果。

我在想什么?

回答

1

你需要给不同的别名,你的表,以获得相关的计数

SELECT *, (
    SELECT COUNT(`message_id`) 
    FROM `user_message` b 
    WHERE `status_to` = 0 
    AND `a`.`user_id` = `b`.`user_id` 
    ) AS `unread` 
FROM `user_message` a 
+0

没错。这完全解决了这个问题。谢谢。 – ekashking