mysql一对多_mysql一对多查询合并多的一方的数据。
有時候會有這樣一個需求,
查詢的一條記錄需要包含另一個表的多條記錄,并且讓多條記錄成為一個字段組成最終的一條記錄。比較難描述,看例子吧。
創建一個產品表:
create table product(
proId int(10),
proName varchar(50)
)
創建一個成分表:
create table componen(
comId int (10),
proId int(10),
comName varchar(50)
)
案例需求:如果一個產品有多個成分,也就是一個產品表對應多個成分表,我想查出的結果,一條記錄包含產品 proId, ProName, ComName,的字段。
思路:
先寫出不含成分表的查詢語句,
然后將一個產品對應的多個成分合并成一個字段,
將合成的字段插入到一個語句中。
實踐:
1. select p.proId , p.proName from product p;
2. SELECT group_concat( c.comName ) FROM componen WHERE componen.proId= 1
3. SELECT
p.proId AS "產品id",
p.proName AS "產品名稱",
(SELECT group_concat( c.comName ) FROM componen WHERE componen.proId
= p.proId)AS "成分"
FROM
product p;
*注意:第2步驟的語句和第三部引用第二部的語句有差別,那部分很重要的!
*如果要對合并的一方去重:嵌套DISTINCT即可
(SELECT group_concat( DISTINCT(c.comName) ) FROM componen WHERE componen.proId= p.proId)
總結
以上是生活随笔為你收集整理的mysql一对多_mysql一对多查询合并多的一方的数据。的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: libuv 原理_Libuv初理解
- 下一篇: mysql卸载权限不够_Linu下启动M