我有一个表格帖子作为 p,表格标签作为 pt,表格标签引用作为 ptr。
tagsref 将具有 post 和 tags 表的 id。
我使用了 group_concat 并且我没有使用 group by 子句,因为在条件中我使用 if 条件仅过滤一行(p.slug = 'once'),假设因为我添加了条件,所以只会返回一行。是的,它确实。
问题是当仍然没有行时,我得到了一行具有空值的行。在下面的 sql 中,最后一个条件不会获取任何结果,因为没有 slug 为 'none' 的行,所以我根本不应该得到任何结果,但我得到了一行具有空值的行。
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'
人们建议使用 group by 子句,并提到 group_by 聚合函数即使未指定 group by 子句也可以工作,但结果可能无法预测。
我使用 group by 并且正在工作。然而。
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
以上是表结构。
如果根本没有行,那么为什么 group_concat 返回一行具有空值?
提出这样一个问题的原因是要确定什么是什么...... :)
参考: