1、背景sql
有一張相片表,一張相片所屬標籤表,一張相片能夠歸屬於多個標籤,表結構以下:函數
如今須要經過一次查詢,獲得每一張照片對應的標籤名稱,標籤名稱之間以固定的分隔符鏈接,結果以下圖:spa
2、查詢語句code
原生 Mysql 語句blog
SELECT think_img.id, think_img.NAME, think_img.label_id, GROUP_CONCAT( think_img_label.NAME SEPARATOR " - " ) AS labelName, think_img.update_time, think_img.create_time FROM `think_img` LEFT JOIN `think_img_label` ON FIND_IN_SET( think_img_label.id, think_img.label_id ) GROUP BY `think_img`.`id` ORDER BY `think_img`.`sort` LIMIT 0,10;
TP5 查詢語句排序
Db::table('think_img')->field('think_img.*,GROUP_CONCAT( think_img_label.name separator " - " ) as labelName') ->join('think_img_label', 'FIND_IN_SET( think_img_label.id,think_img.label_id )', 'left') ->group('think_img.id') ->order('think_img.sort') ->select();
3、關鍵函數用法字符串
FIND_IN_SET(str,strList) table
GROUP_CONCAT([DISTINCT] expr,[ORDER BY ASC/DESC col_name],[SEPARATOR str_val]) class