我现在
表A里面的 字段1的值是:1,2,3,4,5
表B里面的 字段1对应字段2的形式是这样的:字段1       字段2
1      -     语文
2      -     数学
3      -     音乐
4      -     地理
5      -     物理
6      -     滑雪现在的问题就是:
我要用表A里面的字段1来匹配表B里面的字段1.来获取到表B里面字段2的值,这个MYSQL语句该怎么写啊?

解决方案 »

  1.   

    本帖最后由 PhpNewnew 于 2012-09-04 12:12:46 编辑
      

  2.   

    select B.字段2 from A inner join B on A.字段1=B.字段1
      

  3.   

    select B.字段2  from `B`  where B.字段1 in (SELECT A.字段1 FROM `A`);  
      

  4.   

    查询出来的结果 不是多个啊。我现在的表A里面的字段1是:1,2,3,4,5。
    要把表B里面的ID 和 表A里面的字段匹配,就是:表A字段1:1 和表B字段1:1 匹配。
    表A字段1:2 和表B字段1:2 匹配。
    表A字段1:3 和表B字段1:4 匹配。
      

  5.   

    A.字段1=B.字段1
    改为
    find_in_set(B.字段1, A.字段1)
      

  6.   

    现在的问题就是:查询的来的值,是很多条记录。 可不可以在一条记录里面显示。我现在的语句就是:select B.字段2 from A inner join B on find_in_set(B.字段1, A.字段1)
    但是查询出来 都是一条数显示的, 不是显示到一个字段里面的
      

  7.   

    贴你的 
    1、create table ....; 语句
    2、insert into table.....语句期望结果+简单描述 这样猜下去实在是太累了。。
      

  8.   


    -- 
    -- 表的结构 `lc_member_company`
    -- CREATE TABLE `lc_member_company` (
      `mid` mediumint(8) NOT NULL auto_increment COMMENT '会员ID',
      `xuexiao` varchar(250) NOT NULL default '',
      `zhuanye` varchar(250) NOT NULL default '',
      `type` char(3) default NULL,
      `dizhi` enum('成都市') default NULL,
      `qu` char(2) default NULL,
      `jiedao` char(250) NOT NULL,
      `name` char(10) NOT NULL,
      `shenfz` char(18) NOT NULL,
      `xueli` enum('高中','大专','本科','研究生','硕士','博士') default NULL,
      `jieshao` mediumtext,
      `kemu` char(50) default NULL,
      `xingshi` char(20) default NULL,
      `duixiang` char(50) default NULL,
      `jiage` float NOT NULL default '0',
      `point` char(100) NOT NULL default '',
      PRIMARY KEY  (`mid`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=54 ;-- 
    -- 导出表中的数据 `lc_member_company`
    -- INSERT INTO `lc_member_company` VALUES (13, '', '', NULL, NULL, '1', '', '', '', NULL, NULL, '1,3', NULL, NULL, 0, '');
    INSERT INTO `lc_member_company` VALUES (30, '西南财经大学', '经济财贸', '在职教', '成都市', '2', '金沙街道', '', '', NULL, NULL, '1,8,9', NULL, NULL, 0, '');
    INSERT INTO `lc_member_company` VALUES (31, '西南财经大学', '经济财贸', '在职教', '成都市', '3', '金沙街道', '', '', NULL, NULL, '2,6,7', NULL, NULL, 0, '');
    INSERT INTO `lc_member_company` VALUES (33, '成都市川软教育中心', 'PHP工程师', '在校博', '成都市', '5', '金鹏街27号金沙顺苑4栋3单元1201', '刘财', '511025199509108217', '高中', NULL, '3,4,8', '', NULL, 0, '');
    INSERT INTO `lc_member_company` VALUES (35, '成都市川软教育中心', 'PHP工程师', '3', '成都市', '9', '锦屏南路1号金沙蜜地203', '刘财', '511025199509108216', '本科', '', '4', '2', '2', 0, '');
    INSERT INTO `lc_member_company` VALUES (41, '', '', NULL, NULL, '4', '', '', '', NULL, NULL, '5,6,7', '', NULL, 0, '');
    INSERT INTO `lc_member_company` VALUES (42, '', '', NULL, NULL, '6', '', '', '', NULL, NULL, '1,2,3', NULL, NULL, 0, '');
    INSERT INTO `lc_member_company` VALUES (45, '', '', '', '成都市', '7', '锦屏南路1号金沙蜜地2031', '啊啊a', '511025199509108127', '', 'asdasdasdasdasd', '7,8,9', NULL, NULL, 0, '');
    INSERT INTO `lc_member_company` VALUES (46, '成都市川软教育中心123', 'PHP工程师123', '专职教', '成都市', '8', '锦屏南路1号金沙蜜地2031', '啊啊', '511025199509108217', '本科', 'aaaaaaaaaaaaaaaaaa123', '4,5,6', '', '', 122123, '');
    INSERT INTO `lc_member_company` VALUES (48, '成都市川软教育中心', 'PHP工程师123', '1', '成都市', '2', '锦屏南路1号金沙蜜地203', '刘财', '511025199509108217', '研究生', 'sadfasdfasdf', '1,6', '2', '3', 10, '');
    INSERT INTO `lc_member_company` VALUES (51, '成都市川软教育中心123', 'PHP工程师', '5', '成都市', '6', '锦屏南路1号金沙蜜地2031', '啊啊', '511025199509108217', '硕士', 'asdfasdfasdfasdf', '3,4,5,6,7,8,9,21', '1,2', '4,5', 899, '');
    INSERT INTO `lc_member_company` VALUES (53, '', '', '', '成都市', '3', '锦屏南路1号金沙蜜地203', '啊啊', '511025199509108217', '', '', '', '', '', 0, '104.019995, 30.678429');
    -- 
    -- 表的结构 `lc_kemu`
    -- CREATE TABLE `lc_kemu` (
      `id` int(11) NOT NULL auto_increment,
      `content` char(20) NOT NULL,
      PRIMARY KEY  (`id`)
    ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=24 ;-- 
    -- 导出表中的数据 `lc_kemu`
    -- INSERT INTO `lc_kemu` VALUES (1, '语文');
    INSERT INTO `lc_kemu` VALUES (2, '数学');
    INSERT INTO `lc_kemu` VALUES (3, '奥数');
    INSERT INTO `lc_kemu` VALUES (4, '英语');
    INSERT INTO `lc_kemu` VALUES (5, '物理');
    INSERT INTO `lc_kemu` VALUES (6, '化学');
    INSERT INTO `lc_kemu` VALUES (7, '生物');
    INSERT INTO `lc_kemu` VALUES (8, '地理');
    INSERT INTO `lc_kemu` VALUES (9, '历史');
    INSERT INTO `lc_kemu` VALUES (10, '政治');
    INSERT INTO `lc_kemu` VALUES (11, '钢琴');
    INSERT INTO `lc_kemu` VALUES (12, '小提琴');
    INSERT INTO `lc_kemu` VALUES (13, '吉他');
    INSERT INTO `lc_kemu` VALUES (14, '托福');
    INSERT INTO `lc_kemu` VALUES (15, '雅思');
    INSERT INTO `lc_kemu` VALUES (16, '法语');
    INSERT INTO `lc_kemu` VALUES (17, '日语');
    INSERT INTO `lc_kemu` VALUES (18, '德语');
    INSERT INTO `lc_kemu` VALUES (19, '韩语');
    INSERT INTO `lc_kemu` VALUES (20, '英语口语');
    INSERT INTO `lc_kemu` VALUES (21, '美术');
    INSERT INTO `lc_kemu` VALUES (22, '计算机');
    现在有表A lc_member_company 和表B lc_kemu
    我想要的结果就是:lc_member_company.kemu对应 lc_kemu.id,经过上面的测试方法,查询出来的,都只有一个值。但是 lc_member_company.kemu 里面的值  是多个的。该如何查询
      

  9.   

    你可以用 mid 分组,用 group_concat 连接结果字段
      

  10.   

    SELECT co.kemu, kemu.id, GROUP_CONCAT( kemu.kmcont ) 
    FROM  `lc_member_company` co
    LEFT JOIN  `lc_kemu` kemu ON FIND_IN_SET( kemu.id, co.kemu ) 
    GROUP BY kemu.id是这样写的吗?
      

  11.   

    多个content显示在一行还是多行?
      

  12.   


    SELECT co.kemu, kemu.id, GROUP_CONCAT( kemu.kmcont ) 
    FROM  `lc_member_company` co
    LEFT JOIN  `lc_kemu` kemu ON FIND_IN_SET( kemu.id, co.kemu ) 
    GROUP BY kemu.id
    是这样写的吗?
      

  13.   

    SELECT co.kemu, kemu.id, GROUP_CONCAT( kemu.kmcont ) 
    FROM `lc_member_company` co
    LEFT JOIN `lc_kemu` kemu ON FIND_IN_SET( kemu.id, co.kemu ) 
    GROUP BY co.mid
      

  14.   

    select B.字段2 from A inner join B on A.字段1=B.字段1
      

  15.   

    还有一个问题。如果我 还增加了一个 GROUP_CONCAT 那么他就会循环两次。SELECT co.kemu, kemu.id,GROUP_CONCAT( kemu.kmcont ),GROUP_CONCAT(zy.zycont ) 
    FROM `lc_member_company` co
    LEFT JOIN `lc_kemu` kemu ON FIND_IN_SET( kemu.id, co.kemu ) 
    LEFT JOIN `lc_zhuanye` zy ON FIND_IN_SET( zy.id, co.zy ) 
    GROUP BY co.mid