【问题标题】:Count fields with a where clause in SQL在 SQL 中计算带有 where 子句的字段
【发布时间】:2011-10-25 04:19:58
【问题描述】:

是否可以计算某些内容的字段?

我有以下查询:

SELECT * FROM 
(SELECT messages.id as id,
       messages.user_id,
       messages.category_id,
       messages.parent_id,
       messages.message,
       messages.create_date,
       messages.update_date,
       messages.status,
       users.name as username,
       users.id as userid,
       users.email as useremail,
       users.phone as userphone,
       users.active as useractive,
       users.role as userroel,
       users.date as register_date
FROM `afo_messages` as messages 
INNER JOIN `key_users` as users ON messages.user_id = users.id
WHERE messages.category_id=5 AND messages.parent_id=0
ORDER BY messages.id DESC LIMIT 30) ilv 
ORDER BY id ASC

(这里是输出示例:http://lab.mirgorod.us/res.pdf

是否可以在此查询中再添加一列:子消息计数(parent_id = 父消息的 id)?

【问题讨论】:

    标签: mysql sql count inner-join


    【解决方案1】:

    您可以使用子查询轻松完成:

    SELECT * FROM 
    (SELECT messages.id as id,
           messages.user_id,
           messages.category_id,
           messages.parent_id,
           messages.message,
           messages.create_date,
           messages.update_date,
           messages.status,
           users.name as username,
           users.id as userid,
           users.email as useremail,
           users.phone as userphone,
           users.active as useractive,
           users.role as userroel,
           users.date as register_date,
           (SELECT COUNT(*) FROM afo_messages WHERE parent_id=messages.id) AS `sub messages`
    FROM `afo_messages` as messages 
    INNER JOIN `key_users` as users ON messages.user_id = users.id
    WHERE messages.category_id=5 AND messages.parent_id=0
    ORDER BY messages.id DESC LIMIT 30) ilv 
    ORDER BY id ASC
    

    【讨论】:

    • 但是如何处理我的查询呢?
    • 只需添加以 (SELECT COUNT... 开头的行,仅此而已。它就像另一个字段。如果你想要我可以发布整个查询,我会缩短它。
    【解决方案2】:

    尝试将其添加为列:

    child_count = (select count(*) from afo_messages where parent_id=messages.id)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-22
      • 2012-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-03
      相关资源
      最近更新 更多