很常見的用例: 我有一張存放文章的表, tag 字段是逗號分隔的數(shù)字,在顯示列表的時候我想一次性查詢出 tag 的字符串
SELECT
tt.*,u.name,(SELECT group_concat(title) FROM tag WHERE id IN (tt.tag)) as tagFROM content ttLEFT JOIN user u ON tt.owner=u.idORDER BY ts_created DESC
這句話查出來 tag 每次都是只有一個,原因主要是 IN 語句中放了一個字符串,而不是數(shù)字,本來應(yīng)該是IN(97,92),但這樣執(zhí)行實際上代表了IN('97,92'),請高手幫忙解答一下怎樣才能讓它變成一串?dāng)?shù)字用逗號分隔,我知道這樣不符合范式什么鬼的,但我這個東西涉及的數(shù)據(jù)量很小。
昨晚睡覺前還沒想到,稀里糊涂的,早上醒來突然想起來之前用過一個FIND_IN_SET,問題順利解決
SELECT
tt.*,u.name,(SELECT group_concat(title) FROM tag WHERE FIND_IN_SET(id,tt.tag)) as tagFROM content ttLEFT JOIN user u ON tt.owner=u.idORDER BY ts_created DESC
改成這樣就可以了。
這個函數(shù)的功能是尋找一個字符串是否在另外一個以逗號分割的字符串中存在。
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號