1.不同表的相同字段用逗号拼接显示
select
CONCAT_WS(',',a.type,b.type)
from
tableA a
left join tableB B on a.字段 = b.字段
注意:使用CONCAT_WS()的时候,如果有个表字段为空,不会拼接逗号进去,有效防止字段内容多个逗号
2.mysql 根据父类id查询其所有子类id(通用)
SELECT
DATA.id
FROM
(
SELECT
@ids AS _ids,
( SELECT @ids := GROUP_CONCAT( t.id ) FROM tableName t WHERE FIND_IN_SET( parent_id, @ids ) ) AS cids
FROM
t,
( SELECT @ids := '1', @l := 0 ) b
WHERE
@ids IS NOT NULL
) ID,
tableName DATA
WHERE
FIND_IN_SET( DATA.id, ID._ids )
ORDER BY
id
3.mysql的Find_in_set()函数
查询时,如果字段为用逗号分隔开的字符串数组,使用该函数可以直接切割该字段并进行查询,例如:
用户类型表:user_type
id | type |
---|---|
1 | 学生 |
2 | 老师 |
用户表:user
id | user_type_id |
---|---|
1 | 1,2 |
select
u.id as id,
(select GROUP_CONCAT(ut.type) from user_type ut where FIND_IN_SET(ut.id,u.user_type_id)) as userType
from
user u
查询结果为:
id | userType |
---|---|
1 | 学生,老师 |