[英]SQL Join only returning 1 row
不太确定我缺少什么,但是我的SQL语句仅返回一行。
SELECT
tl.*,
(tl.topic_total_rating/tl.topic_rates) as topic_rating,
COUNT(pl.post_id) - 1 as reply_count,
MIN(pl.post_time) AS topic_time,
MAX(pl.post_time) AS topic_bump
FROM topic_list tl
JOIN post_list pl
ON tl.topic_id=pl.post_parent
WHERE
tl.topic_board_link = %i
AND topic_hidden != 1
ORDER BY %s
我有两个表(post_list和topic_list),以及post_list的post_parent链接到topic_list的topic_id。
而不是返回所有主题(其开发板的topic_board_link为n),而是仅返回一个主题。
你通常需要一个GROUP BY子句。 关于何时需要GROUP BY,MySQL有与标准SQL不同的规则。 因此,这更接近于标准SQL:
SELECT tl.*,
(tl.topic_total_rating/tl.topic_rates) AS topic_rating,
COUNT(pl.post_id) - 1 AS reply_count,
MIN(pl.post_time) AS topic_time,
MAX(pl.post_time) AS topic_bump
FROM topic_list AS tl
JOIN post_list AS pl ON tl.topic_id = pl.post_parent
WHERE tl.topic_board_link = ? -- %i
AND tl.topic_hidden != 1
GROUP BY tl.col1, ..., topic_rating
ORDER BY ? -- %s
在Standard SQL中,您将必须列出topic_list中的每一列,再加上非聚合值topic_rating(并且可能必须列出表达式,而不是在选择列表中列出显示标签或列别名)。
您还可以在'topic_board_link'上设置限制条件,这可能会将您的结果集限制为一个组。 您通常也不能在ORDER BY子句中使用占位符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.