2017-10-14 63 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