Mysql 联合查询 主表和详细表查询方案

mysql 多表联合查询示例:

aindex 为主表

CREATE TABLE `aindex` (

  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,

  `name` char(20) COLLATE UTF8_unicode_ci DEFAULT NULL,

  PRIMARY KEY (`id`)

) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

表 adetail 为详细信息表

CREATE TABLE `adetail` (

  `did` int(11) NOT NULL,

  `aid` int(11) DEFAULT NULL,

  `sn` char(30) COLLATE utf8_unicode_ci DEFAULT NULL,

  PRIMARY KEY (`did`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

需要查询aindex 将所有信息取出来。

SELECT aindex.id, aindex.name,
       GROUP_CONCAT(adetail.did) AS dids,
       GROUP_CONCAT(adetail.sn) AS sns
FROM aindex
LEFT JOIN adetail ON aindex.id = adetail.aid
GROUP BY aindex.id;

上面是比较直观的方案,但是数据查询出来后需要进行解析。

image.png

SELECT aindex.id, aindex.name, adetail.did, adetail.aid, adetail.sn
FROM aindex
LEFT JOIN adetail ON aindex.id = adetail.aid;

image.png

上面是展示出来所有信息来,不合并,就是普通 join。

相关阅读

添加新评论