MySQL 无法做到 select * [but not select id] from table ?

2013-11-05 14:28:09 +08:00
 9
业务逻辑需要复制一行记录,但是里面有个 AI 字段,所以想 select 除了 AI 的所有的字段来插入。在 stackoverflow 上找了下似乎不可行?MySQL的选择语法太弱了吧?

有其他方法复制一行记录吗?
3521 次点击
所在节点    问与答
6 条回复
chenwl
2013-11-05 14:30:15 +08:00
结果放在数组里,再处理下不行吗?
justfindu
2013-11-05 15:23:34 +08:00
那就一个个字段写
lenmore
2013-11-05 15:26:32 +08:00
手写全部字段,
或者,
从系统表读取该表的所有列,排除掉你要排除的列,再拼一条SQL语句。
9
2013-11-05 17:47:55 +08:00
@chenwl @justfindu @lenmore

手写全部字段很蛋疼的,以后这个表每加一个字段,还要回来这里改。

暂时的解决方案:

1. SHOW COLUMNS FROM table 获得所有列;
2. 把结果保存为数组,然后排除掉不需要的 id 列, 再拼接 $col_str = implode(', ', $cols_ary);
3. 插入数据,完成.

INSERT INTO table (
$col_str
) SELECT $col_str
FROM table
WHERE id = 1;
ch3nz
2013-11-05 19:35:49 +08:00
如果查询出来的结果是一个数组,unset($result['id'])不就对了。
shinwood
2013-11-05 20:48:41 +08:00
你也可以 foreach 一下,如果 = id 的话,直接 continue 做过滤,这些 Model 层做的事情,不要给数据库太大压力。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/88107

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX