我有 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 函数来实现,但我不知道在这种情况下如何使用这些函数。有人请帮助我构建查询以实现此结果。
谢谢你。
它会是这样的:
由于group_concat_max_len的默认值为 1024,因此您可能需要再做两件事来容纳超过
GROUP_CONCAT
1024 的结果首先,登录 MySQL 并运行
然后,将其添加到组标题
my.cnf
下[mysqld]
试试看 !!!
这应该适合你:
我补充说
GROUP_CONCAT(address SEPARATOR '\n')
,这使得在地址之间跳过一行并将GROUP BY cid
其分组cid
。解决了,查询是:
不添加 IFNULL 会产生问题。最初由 RolandoMySQLDBA 回答。谢谢。