Mysql
mysql group_concat 的問題,複雜的查詢,沒有得到所需的結果
我有 5 張桌子
- 大學
- 貿易
- 區
- 接觸
- 錄取
他們的關係是這樣的
我的聯繫表有問題。在這個表中,cid 和 location 是主鍵。每個cid(即大學ID)只能有兩個位置的校園和辦公室。表攝入量連接大學和貿易表。通過下面的查詢,我得到每個地址兩次的結果。這是我的查詢:
SELECT cname, ctype, tname, seats, hostel, new, dname, address, ph_no, email, website FROM college, trade, district, intake, contact WHERE intake.cid = college.cid and intake.tid = trade.tid and college.did = district.did and contact.cid = college.cid ORDER BY cname ASC;
我目前的結果:
我想要的結果:
我知道這可以通過 grop_concat 和 concat 函式來實現,但我不知道在這種情況下如何使用這些函式。有人請幫助我建構查詢以實現此結果。
謝謝你。
它會是這樣的:
SELECT cname, ctype, tname, seats, hostel, dname, GROUP_CONCAT(addr SEPARATOR '\n') addresses FROM ( SELECT cname, ctype, tname, seats, hostel, dname, CONCAT('Address: ',address,',Phone:',ph_no,',Email:',email,',Website:',website) addr FROM college, trade, district, intake, contact WHERE intake.cid = college.cid and intake.tid = trade.tid and college.did = district.did and contact.cid = college.cid AND cname LIKE '%{$cname}%' AND tname LIKE '%{$tname}%' {$ctype} AND dname LIKE '%{$dname}%' {$hostel} ORDER BY cname ASC ) A GROUP BY cname, ctype, tname, seats, hostel, dname;
由於group_concat_max_len的預設值為 1024,因此您可能需要再做兩件事來容納超過
GROUP_CONCAT
1024 的結果首先,登錄 MySQL 並執行
mysql> SET GLOBAL group_concat_max_len = 1024 * 1024;
然後,將其添加到組標題
my.cnf
下[mysqld]
[mysqld] group_concat_max_len=1M
試一試 !!!