INSERT INTO `news` SELECT * FROM `news`,news中含有唯一索引的ID字段时,怎么办?

winder 2006-12-25 11:54:08
INSERT INTO `news` SELECT * FROM `news`,news中含有唯一索引的ID字段时,怎么办?
...全文
397 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
winder 2006-12-26
  • 打赏
  • 举报
回复
但是,INSERT和SELECT为同一个表,我试过,可以的。
winder 2006-12-26
  • 打赏
  • 举报
回复
xuzuning(唠叨)的意思应该是INSERT和SELECT不能同一个表吧。
>>INSERT语句的目的表不能出现在SELECT查询部分的FROM子句,因为这在ANSI SQL中被禁止让从你正在插入的表中SELECT。
这句话怎么理解?
含有唯一索引字段确实是不能SELECT *,我试过的。
winder 2006-12-26
  • 打赏
  • 举报
回复
表类型是MyISAM。
Gdj 2006-12-26
  • 打赏
  • 举报
回复
myIasm的表在操作时是表锁定的应该不能。innodb的不知道能不能。
yuyuwhite 2006-12-25
  • 打赏
  • 举报
回复
INSERT INTO `news`(item1,item2,item3) SELECT item1,item2,item3 FROM `news`
caotian2000 2006-12-25
  • 打赏
  • 举报
回复
呵呵!可能真的不能写哦!你先写一个临时表里好了
zj318503533 2006-12-25
  • 打赏
  • 举报
回复
好像只能一个字段一个字段的填加,那前边的ID字段去掉
擒兽 2006-12-25
  • 打赏
  • 举报
回复
不行,只能一一对应字段更新。

Insert into 表(字段1,字段2,字段3...) Select 字段1,字段2,字段3... From 表 UNION ALL Select 字段1,字段2,字段3... From 表 ......

如果不是 自动增长 的标识,主键是可以插入的,前提是满足主键约束。
winder 2006-12-25
  • 打赏
  • 举报
回复
>>能这样写吗?至少mysql是不允许的
奇怪的,我试了,可以的。
xuzuning 2006-12-25
  • 打赏
  • 举报
回复
能这样写吗?至少mysql是不允许的

INSERT INTO ... SELECT语句满足下列条件:
查询不能包含一个ORDER BY子句。
INSERT语句的目的表不能出现在SELECT查询部分的FROM子句,因为这在ANSI SQL中被禁止让从你正在插入的表中SELECT。(问题是SELECT将可能发现在同一个运行期间内先前被插入的记录。当使用子选择子句时,情况能很容易混淆)
AUTO_INCREMENT列象往常一样工作。
PleaseDoTellMeWhy 2006-12-25
  • 打赏
  • 举报
回复
那就把id字段不要SELECT了嘛!
懒得去死 2006-12-25
  • 打赏
  • 举报
回复

INSERT INTO `news`(item1,item2,item3) SELECT item1,item2,item3 FROM `news`
lvlfforever 2006-12-25
  • 打赏
  • 举报
回复
INSERT INTO `news`(id,item1,item2,item3) SELECT null,item1,item2,item3
winder 2006-12-25
  • 打赏
  • 举报
回复
我是想自动增长的还是自动增长,不覆盖。
ice_berg16 2006-12-25
  • 打赏
  • 举报
回复
如果想在唯一索引重复的时候进行覆盖的话可以用
replace into `news` select ...

21,886

社区成员

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

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