鍍金池/ 問答/數(shù)據(jù)庫/ mysql字符串拼接無法全部讀取?

mysql字符串拼接無法全部讀???

要讀取某欄目(catalog)及其子欄目(可能有也可能沒有)下的所有文章(article),article表有字段catalog_id,用拼接字符串的形式,發(fā)現(xiàn)只會讀取到catalog_id為10的所有文章

select * from article  where article.catalog_id IN (
    select CONCAT_WS(',',10,GROUP_CONCAT(id))  from catalog where catalog.top_id=10
);

請問我哪里寫錯(cuò)了?

回答
編輯回答
乖乖噠

如果catalog 里有id=1,2,3,4的, GROUP_CONCAT(id)返回 '1,2,3,4',
CONCAT_WS(',',10,GROUP_CONCAT(id))將返回 '10,1,2,3,4',注意這里都是帶引號的,意味著這是字符串

相當(dāng)于是

select * from article  where article.catalog_id IN (
    '10,1,2,3,4'
);

顯示這里引號起了副作用

改成這個(gè)試試?

select * from article  where article.catalog_id IN (
select 10 union
select id from catalog where catalog.top_id=10
);

因?yàn)椴皇呛芮宄愕谋斫Y(jié)構(gòu)和數(shù)據(jù), 也許這并不是你想要的 ;)

2018年5月14日 21:48