Mysql count()为零时使用case?
我试图得到一个按评论数排序的文章列表。我已经做了类似的过程,以获得一份按Atile的选票排序的列表,但我不知道为什么现在我不能让它工作Mysql count()为零时使用case?,mysql,Mysql,我试图得到一个按评论数排序的文章列表。我已经做了类似的过程,以获得一份按Atile的选票排序的列表,但我不知道为什么现在我不能让它工作 SELECT a.*,cc.params as catparams,cc.title as cattitle,u.username, CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(":", a.id, a.alias) ELSE a.id END as slug, CASE WHEN CHAR_LENGTH(cc.a
SELECT a.*,cc.params as catparams,cc.title as cattitle,u.username,
CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(":", a.id, a.alias) ELSE a.id END as slug,
CASE WHEN CHAR_LENGTH(cc.alias) THEN CONCAT_WS(":", cc.id, cc.alias) ELSE cc.id END as catslug,
CASE WHEN (COUNT(rs.id)=0) THEN 0 ELSE COUNT(rs.id) END as total_comments
FROM jos_content AS a
INNER JOIN table_users AS u ON u.id = a.created_by
INNER JOIN table_categories AS cc ON cc.id = a.catid
LEFT JOIN table__comments AS rs ON rs.id = a.id
此代码仅在文章在comments表中至少有一个条目时返回结果;我想要的是得到所有文章的列表,如果comments表中没有条目,则返回0作为total_comments。我试过内连接、左连接和右连接
非常感谢您的帮助 我想您需要一个子选择
SELECT
a.*,
cc.params as catparams,
cc.title as cattitle,
u.username,
CASE
WHEN CHAR_LENGTH(a.alias)
THEN CONCAT_WS(":", a.id, a.alias)
ELSE a.id END as slug,
CASE
WHEN CHAR_LENGTH(cc.alias)
THEN CONCAT_WS(":", cc.id, cc.alias)
ELSE cc.id END as catslug,
(SELECT COUNT(id) FROM table__comments WHERE id=a.id) as total_comments
FROM
jos_content AS a
INNER JOIN table_users AS u ON u.id = a.created_by
INNER JOIN table_categories AS cc ON cc.id = a.catid