我的脚本问题需要选择我的所有帖子和相关评论。 现在我跟着查询:
$sql = "SELECT posts.post_title, posts.post_modified, post_content,update_modified, update_content
FROM posts
LEFT JOIN updates
ON posts.post_ID = updates.update_post_ID";
查询效果很好,如果帖子有多个注释,它会给我多个条目。 我一直在搜索,但不幸的是我无法重新编写我的查询以满足我的需求。 我真的希望有人可以帮帮我吗?
答案 0 :(得分:1)
我认为你想要用作SELECT DISTINCT ...
的DISTINCT关键字来避免重复。但是,如果我理解正确,您的评论会出现在更新表格中,并且您将update_modified
和update_content
提取到记录集中。因此,假设这些(可能)是唯一值,那么DISTINCT将不会将它们折叠下来。最好只使用DISTINCT提取updates.update_post_ID
,然后根据您在需要时检索的ID从更新中提取所需内容。
答案 1 :(得分:1)
如果您希望每封帖子只返回1行,并且帖子中包含所有评论,则最简单的方法是使用GROUP_CONCAT()
。这将返回所有列数据的csv。假设update_content
是帖子评论,请尝试类似 -
SELECT posts.post_title, posts.post_modified, post_content, GROUP_CONCAT(update_modified), GROUP_CONCAT(update_content)
FROM posts
LEFT JOIN updates
ON posts.post_ID = updates.update_post_ID
GROUP BY updates.update_post_ID
注意 - GROUP_CONCAT()
的{{3}}默认值为1024.如果您的评论过长,则需要在运行GROUP_CONCAT()
查询之前增加此评论,否则评论将被截断 - < / p>
SET [GLOBAL | SESSION] group_concat_max_len = 10240; // must be in multiples of 1024
SELECT id, name
GROUP_CONCAT(comment) AS comment
FROM table
GROUP BY name;
您还需要了解group_concat_max_len
,因为这是您可以var_group_concat_max_len
设置的限制。