如何在mysql中将2个表连接成1个?

时间:2013-03-21 09:21:29

标签: mysql sql join

如何在mysql中将2个表连接成1?

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for `p`
-- ----------------------------
DROP TABLE IF EXISTS `p`;
CREATE TABLE `p` (
  `id` int(11) NOT NULL auto_increment,
  `name` varchar(255) default NULL,
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of p
-- ----------------------------
INSERT INTO `p` VALUES ('1', 'jimmy');
INSERT INTO `p` VALUES ('2', 'tina');


SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for `t`
-- ----------------------------
DROP TABLE IF EXISTS `t`;
CREATE TABLE `t` (
  `id` int(11) NOT NULL,
  `tag` varchar(255) NOT NULL default '',
  `value` varchar(255) default NULL,
  PRIMARY KEY  (`id`,`tag`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of t
-- ----------------------------
INSERT INTO `t` VALUES ('1', 'name', '111');
INSERT INTO `t` VALUES ('1', 'age', '30');
INSERT INTO `t` VALUES ('2', 'bag', 'miki');
INSERT INTO `t` VALUES ('2', 'boy friend', 'jimmy');

图片显示了我想要的内容。enter image description here

1 个答案:

答案 0 :(得分:4)

SELECT  p.id, p.name,
        GROUP_CONCAT(CONCAT(tag, ':', value)) tags
FROM    p
        INNER JOIN t
            ON p.iD = t.id
GROUP   BY p.id, p.name

输出

╔════╦═══════╦═══════════════════════════╗
║ ID ║ NAME  ║           TAGS            ║
╠════╬═══════╬═══════════════════════════╣
║  1 ║ jimmy ║ age:30,name:111           ║
║  2 ║ tina  ║ bag:miki,boy friend:jimmy ║
╚════╩═══════╩═══════════════════════════╝