Mysql之一對多查詢,如何將多條記錄合併成一條記錄
資料庫環境:mysql5.6
需求描述(圖1):
最終期望的結果(圖2):
如上圖所示,現有兩張表cj_lottery_winning_record和cj_lottery_winning_user_info
兩者的關係是一對多。
現在進行連線查詢時,
SELECT
a.id winning_id,
a.awards_setting_id,
a.award_name,
a.award_type,
a.create_time,
a.awards_name,
a.get_status,
a.push_status,
b.key,
b.value honoree_info
FROM
cj_lottery_winning_record a
LEFT JOIN cj_lottery_record_user_info b
ON a.id = b.winning_id
WHERE activity_id=’100270’
ORDER BY a.create_time DESC LIMIT 0,10;
會得到圖1所示的結果。
如果想得到圖2所示的結果,只需將sql語句改成下面的即可:
SELECT
a.id winning_id,
a.awards_setting_id,
a.award_name,
a.award_type,
a.create_time,
a.awards_name,
a.get_status,
a.push_status,
b.info
FROM
cj_lottery_winning_record a
LEFT JOIN
(SELECT
winning_id,
GROUP_CONCAT(
IF(
key
CONCAT(‘微信:’,
value
, ‘,’), IF(
key
= ‘手機’, CONCAT(‘手機:’,
value
, ‘,’), IF(
key
= ‘地址’, CONCAT(‘地址:’,
value
, ‘,’), ”
)
)
)
) AS info
FROM
cj_lottery_record_user_info
GROUP BY winning_id) b
ON a.id = b.winning_id
WHERE a.activity_id = ‘100270’
ORDER BY a.create_time DESC
LIMIT 0, 10 ;