我的表格標籤爲p,表標籤爲pt,表tagref爲ptr。爲什麼group_concat在沒有行的情況下帶有空值的一行
tagsref將具有帖子和標籤表的ID。
我用group_concat和我沒有使用group by子句,因爲在條件我使用if條件來只過濾一行(p.slug ='一次')假設由於我已經添加了條件只有一行將返回。是的,它確實。
問題是當沒有行時,我仍然得到一個空值的行。在下面的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 聚合功能將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返回一個空值的行?
的原因這樣的問題是要確保的是什麼... :)
參考:
Query is resulting in 1 row with null values when id is not found
如果未選擇標籤,則此代碼不會插入到表中。無論如何,這是一個有效的點,我會更新它。你最後說過的那個。此外,我會用例子爲你的其他觀點做一些試驗和錯誤。 –