Mysql 为什么在根本没有行的情况下,group_concat会带来一行空值
我有一个表柱作为p,表标签作为pt,表标签作为ptr tagsref将具有post和tags表的id 我使用了group_concat,而没有使用group by子句,因为在条件中,我使用if条件只过滤一行p.slug='once',假设因为我添加了条件,所以只返回一行。是的 问题是当没有行的时候,我得到了一个空值的行。在下面的sql中,最后一个条件将不会获取任何结果,因为没有slug为“none”的行,所以我根本不应该获取任何结果,但我得到了一个null值的行Mysql 为什么在根本没有行的情况下,group_concat会带来一行空值,mysql,group-concat,Mysql,Group Concat,我有一个表柱作为p,表标签作为pt,表标签作为ptr tagsref将具有post和tags表的id 我使用了group_concat,而没有使用group by子句,因为在条件中,我使用if条件只过滤一行p.slug='once',假设因为我添加了条件,所以只返回一行。是的 问题是当没有行的时候,我得到了一个空值的行。在下面的sql中,最后一个条件将不会获取任何结果,因为没有slug为“none”的行,所以我根本不应该获取任何结果,但我得到了一个null值的行 SELECT p.name, p
SELECT p.name, p.slug, GROUP_CONCAT(pt.name) as catz
FROM post_tags pt, post_tagsref ptr, post p
WHERE p.id = ptr.tid AND ptr.cid = pt.id AND p.slug = 'none'
人们建议使用GROUPBY子句,并提到GROUPBY
即使GROUPBY子句不可用,聚合函数也可以工作
指定,但结果可能不可预测
我以前是小组成员,现在正在工作。然而
以上是表格结构
如果根本没有行,那么为什么group_concat返回一行空值
提出这样一个问题的原因是为了确定什么是什么…:
参考:
没有输入的聚合函数倾向于产生输出:没有行的总和为零,计数也为零,平均值为空。这种情况会使许多查询保持一致,这应该是得到NULL的原因 我没有使用GROUPBY子句,因为在条件中,我使用if条件只过滤一行[…] 您只筛选到一篇文章,但我假设每篇文章可能有多个标记,否则为什么要使用group_concat,这样连接将产生多行。因此,您可能希望按post id进行分组
还注意到,当你正在做内部连接时,一个没有标签的帖子将不会被报告,所以考虑使用左边的连接。< /P>如果没有选择标签,这个代码就不会插入表中。无论如何,这是一个有效的点,我会更新它。你上次说的那个。除此之外,我将用一些例子对你的其他观点做一些尝试和错误。
post
-----
id | name | slug
1 | sam | sam
2 | do do | do-do
post_tags
--------------
id | name | slug
1 | music | music
2 | movies | movies
3 | tv | tv
post_tagsref
------------
pid | pcid
1 | 2
1 | 1
2 | 1