Mysql

mysql group_concat 的問題,複雜的查詢,沒有得到所需的結果

  • March 3, 2016

我有 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_CONCAT1024 的結果

首先,登錄 MySQL 並執行

mysql> SET GLOBAL group_concat_max_len = 1024 * 1024;

然後,將其添加到組標題my.cnf[mysqld]

[mysqld]
group_concat_max_len=1M

試一試 !!!

引用自:https://dba.stackexchange.com/questions/105283