MySQLのconcatおよびgroup_concatの使用
1573 ワード
自己理解
concat:1行のデータの複数列のデータを1列のデータにマージする
group_concat:複数行のデータの列を1行および1列のデータにマージ
concatはgroupbyキーワードを使用する必要はありません
group_concatはgroupbyキーワードを使用する必要があります.そうしないと、エラーが発生します.
group_concat適用シーンの例
学生表データ
id name age
1枚三20
2王さん30
3李四22
4王さん25
需要:同じ名前の学生を検索
クエリ結果
id name
1枚3枚
2,4王さん
3李四
すなわち、もともと「老王」という名前のデータが2行あり、idが統合され、中間が区切り文字で区切られている
会社プロジェクト開発に書いてあるsql添付
参照先:
https://blog.csdn.net/mary19920410/article/details/76545053/
group_concatの使い方
https://blog.csdn.net/qq_35531549/article/details/90383022
concat:1行のデータの複数列のデータを1列のデータにマージする
group_concat:複数行のデータの列を1行および1列のデータにマージ
concatはgroupbyキーワードを使用する必要はありません
group_concatはgroupbyキーワードを使用する必要があります.そうしないと、エラーが発生します.
group_concat適用シーンの例
学生表データ
id name age
1枚三20
2王さん30
3李四22
4王さん25
需要:同じ名前の学生を検索
select group_concat(student.id SEPARATOR ','),name from student group by name
クエリ結果
id name
1枚3枚
2,4王さん
3李四
すなわち、もともと「老王」という名前のデータが2行あり、idが統合され、中間が区切り文字で区切られている
会社プロジェクト開発に書いてあるsql添付
WITH jobName AS(
SELECT GROUP_CONCAT(job.`name` SEPARATOR ',') AS job_name, uoj.user_org_id
FROM user_org_job uoj, job
WHERE uoj.job_id = job.id
GROUP BY uoj.user_org_id
),
positionName AS(
SELECT GROUP_CONCAT(p.`name` SEPARATOR ',') AS position_name, uop.user_org_id
FROM user_org_position uop, POSITION AS p
WHERE uop.position_id = p.id
GROUP BY uop.user_org_id
)
SELECT
USER.*,
org.`id` AS org_id,
org.`name` AS org_name,
org.`type` AS org_type,
uo.`type` AS uo_type,
jobName.job_name,
positionName.position_name
FROM USER
LEFT JOIN user_org AS uo
ON USER.`id` = uo.user_id
LEFT JOIN org
ON org.`id` = uo.`org_id`
LEFT JOIN jobName
ON uo.id = jobName.user_org_id
LEFT JOIN positionName
ON uo.id = positionName.user_org_id
ORDER BY NAME ASC
参照先:
https://blog.csdn.net/mary19920410/article/details/76545053/
group_concatの使い方
https://blog.csdn.net/qq_35531549/article/details/90383022