Mysql insert多条记录的问题

lv9942 2010-09-21 11:23:10
例如有三张表
A(a_id,a_name,b_id)
B(b_id,c_id)
C(c_id,c_name,等等)
我想写个存储过程,前台一般传来都是
a_id = 1,
a_name = name,
b_id = 1,
c_id = 1,2,3,4,5
之类的值,我想做到同时给2张表插入数据
A表插入的是(a_id=1,a_name=name,b_id=1)
B表插入的是(b_id=1,c_id =1),(b_id=1,c_id =2),(b_id=1,c_id =3),(b_id=1,c_id =4),(b_id=1,c_id =5)
我现在的问题是
1、如何才能在存储过程里判断c_id传来的个数。
2、如何做到循环插入数据。
...全文
518 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
zuoxingyu 2010-09-21
  • 打赏
  • 举报
回复
第二个问题就是个拼SQL命令的问题了,你把'1,2,3,4,5'按逗号一个个拆开,然后和b_id=1合并。
zuoxingyu 2010-09-21
  • 打赏
  • 举报
回复

mysql> select length(replace('1,2,3,4,5',',',''));
+-------------------------------------+
| length(replace('1,2,3,4,5',',','')) |
+-------------------------------------+
| 5 |
+-------------------------------------+
1 row in set (0.00 sec)

mysql>

得到个数。
wwwwb 2010-09-21
  • 打赏
  • 举报
回复
1 len('1,2,3,4,5')-len(replace('1,2,3,4,5',',',''))
2 自己动手做一下吧,有问题再问
lv9942 2010-09-21
  • 打赏
  • 举报
回复
恩 谢谢zuoxingyu 问题解决了
zuoxingyu 2010-09-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 lv9942 的回复:]
zuoxingyu能再问下如何把'1,2,3,4,5,10'按逗号一个个拆开。。我找了半天没找到适合的函数。。
[/Quote]


select SUBSTRING_INDEX('1,2,3,4,5',',',1),
SUBSTRING_INDEX(SUBSTRING_INDEX('1,2,3,4,5',',',2),',',-1),
SUBSTRING_INDEX(SUBSTRING_INDEX('1,2,3,4,5',',',3),',',-1),
SUBSTRING_INDEX(SUBSTRING_INDEX('1,2,3,4,5',',',4),',',-1),
SUBSTRING_INDEX(SUBSTRING_INDEX('1,2,3,4,5',',',5),',',-1);


这样,就把1,2,3,4,5拆成单个数字了。
lv9942 2010-09-21
  • 打赏
  • 举报
回复
建表更不行了 我没这个权限。。
lv9942 2010-09-21
  • 打赏
  • 举报
回复
SUBSTRING_INDEX这个不是我想要的效果。。。。我刚才试过了
ACMAIN_CHM 2010-09-21
  • 打赏
  • 举报
回复
或者简单一点儿的方法,创建一个序列表。如果50不够的话,自己在EXCEL生成1000或者10000然后插入。
insert into seq values
(1),
(2),
(3),
(4),
(5),
(6),
(7),
(8),
(9),
(10),
(11),
(12),
(13),
(14),
(15),
(16),
(17),
(18),
(19),
(20),
(21),
(22),
(23),
(24),
(25),
(26),
(27),
(28),
(29),
(30),
(31),
(32),
(33),
(34),
(35),
(36),
(37),
(38),
(39),
(40),
(41),
(42),
(43),
(44),
(45),
(46),
(47),
(48),
(49),
(50);

然后
insert into B(b_id,c_id) 
select 1,id
from seq
where find_in_set(id,'1,2,3,4,5');


mysql> select 1,id
-> from seq
-> where find_in_set(id,'1,2,3,4,5');
+---+----+
| 1 | id |
+---+----+
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
| 1 | 4 |
| 1 | 5 |
+---+----+
5 rows in set (0.00 sec)

mysql>


ACMAIN_CHM 2010-09-21
  • 打赏
  • 举报
回复
[Quote]zuoxingyu能再问下如何把'1,2,3,4,5,10'按逗号一个个拆开。。我找了半天没找到适合的函数。。[/Quote]
mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', 2);
-> 'www.mysql'
mysql> SELECT SUBSTRING_INDEX('www.mysql.com', '.', -2);
-> 'mysql.com'

lv9942 2010-09-21
  • 打赏
  • 举报
回复
zuoxingyu能再问下如何把'1,2,3,4,5,10'按逗号一个个拆开。。我找了半天没找到适合的函数。。

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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