求解:Mysql 一个字段匹配多个条件

Eason_____________ 2012-09-04 11:54:49
我现在
表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语句该怎么写啊?
...全文
892 22 打赏 收藏 转发到动态 举报
写回复
用AI写文章
22 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangzehuanhuan 2012-09-05
  • 打赏
  • 举报
回复
不懂啊
goat_13 2012-09-05
  • 打赏
  • 举报
回复
这个因该有很多办法吧~
联合查询
连接表
建立视图
方法很多呀~
Eason_____________ 2012-09-04
  • 打赏
  • 举报
回复
现在查询出来的是单个的。
Eason_____________ 2012-09-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

select B.字段2 from A inner join B on A.字段1=B.字段1
[/Quote]


查询出来的结果 不是多个啊。

我现在的表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 匹配。



小肚子 2012-09-04
  • 打赏
  • 举报
回复
select B.字段2 from `B` where B.字段1 in (SELECT A.字段1 FROM `A`);
一起混吧 2012-09-04
  • 打赏
  • 举报
回复
select B.字段2 from A inner join B on A.字段1=B.字段1
黄袍披身 2012-09-04
  • 打赏
  • 举报
回复
联合查询么

SELECT table1,f1,table2.f1,table2.f2 FROM table2,table1 WHERE table1.f1=table2.f1;
Eason_____________ 2012-09-04
  • 打赏
  • 举报
回复
求解啊!
Eason_____________ 2012-09-04
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 的回复:]

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
[/Quote]


还有一个问题。如果我 还增加了一个 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
shshsgfhgfhthfh 2012-09-04
  • 打赏
  • 举报
回复
select B.字段2 from A inner join B on A.字段1=B.字段1
Eason_____________ 2012-09-04
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]

你可以用 mid 分组,用 group_concat 连接结果字段
[/Quote]

太感谢了。 可以了。!!!
一起混吧 2012-09-04
  • 打赏
  • 举报
回复
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
Eason_____________ 2012-09-04
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 的回复:]

多个content显示在一行还是多行?
[/Quote]

content显示在一行里面!
Eason_____________ 2012-09-04
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]

你可以用 mid 分组,用 group_concat 连接结果字段
[/Quote]

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


是这样写的吗?

一起混吧 2012-09-04
  • 打赏
  • 举报
回复
多个content显示在一行还是多行?
Eason_____________ 2012-09-04
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 的回复:]

你可以用 mid 分组,用 group_concat 连接结果字段
[/Quote]


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

是这样写的吗?
xuzuning 2012-09-04
  • 打赏
  • 举报
回复
你可以用 mid 分组,用 group_concat 连接结果字段
Eason_____________ 2012-09-04
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

贴你的
1、create table ....; 语句
2、insert into table.....语句

期望结果+简单描述

这样猜下去实在是太累了。。
[/Quote]





--
-- 表的结构 `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 里面的值 是多个的。该如何查询
一起混吧 2012-09-04
  • 打赏
  • 举报
回复
贴你的
1、create table ....; 语句
2、insert into table.....语句

期望结果+简单描述

这样猜下去实在是太累了。。
Eason_____________ 2012-09-04
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

A.字段1=B.字段1
改为
find_in_set(B.字段1, A.字段1)
[/Quote]
现在的问题就是:

查询的来的值,是很多条记录。 可不可以在一条记录里面显示。

我现在的语句就是:select B.字段2 from A inner join B on find_in_set(B.字段1, A.字段1)
但是查询出来 都是一条数显示的, 不是显示到一个字段里面的
加载更多回复(1)

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧