A-A+

mysql中select into from语句使用例子分析

2017年10月17日 PHP技术文章 暂无评论 阅读 0 views 次

今天发现数据库中有一些数据乱了我需要做一个临时表来存储数据,我们根据条件来把指定ID的数据保存到临时表,然后进行数据替换操作,但在使用select into from中发现许多的问题,下面我把整理个过程与大家分享一下.

表如下所示,代码如下:

SELECT * FROM `test_table_draw` WHERE `borough_id`>=10266 and `borough_id` =10266 and `borough_id` <=12354

相册表,创建一个备份表,代码如下:

  1. CREATE TABLE IF NOT EXISTS `test_table_tp` (   
  2.   `id` int(11) NOT NULL AUTO_INCREMENT,   
  3.   `pic_url` varchar(200) NOT NULL,   
  4.   `pic_thumb` varchar(200) DEFAULT NULL,   
  5.   `pic_desc` varchar(200) DEFAULT NULL,   
  6.   `borough_id` int(11) NOT NULL,   
  7.   `creater` varchar(20) DEFAULT NULL,   
  8.   `addtime` int(11) DEFAULT NULL,   
  9.   PRIMARY KEY (`id`),   
  10.   KEY `borough_id` (`borough_id`)   
  11. ) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=97289 ;   

语法,代码如下:Insert into Table2(field1,field2,...) select value1,value2,... from Table1

例子:Insert into test_table_tp select * from test_table_draw where `borough_id`>=10266 and `borough_id`

错误提示,代码如下:

  1. INSERT INTO test_table_tp   
  2. SELECT *    
  3. FROM test_table_draw   
  4. WHERE  `borough_id` >=10266   
  5. AND  `borough_id`   

MySQL 返回:#1136 - Column count doesn't match value count at row 1

解决,代码如下:

  1. Insert into(id,pic_url,pic_thumb,pic_desc,borough_id,creater,addtime) test_table_tp select id,pic_url,pic_thumb,pic_desc,borough_id,creater,addtimefrom test_table_draw where `borough_id`>=10266 and `borough_id` <=12354   

后来发现上面不对时又找如下代码:

Select * Into new_table_name from old_table_name;

测试仪:Select * Into test_table_tp1 from test_table_draw where `borough_id`>=10266 and `borough_id` <=12354

执行后错误,错误SQL查询,代码如下:

  1. SELECT *    
  2. INTO test_table_tp   
  3. FROM test_table_draw   
  4. WHERE  `borough_id` >=10266   
  5. AND  `borough_id`    
  6. LIMIT 0 , 30   

MySQL 返回:#1327 - Undeclared variable: test_table_tp

网上找到提示要求目标表Table2不存在,因为在插入时会自动创建表Table2,并将Table1中指定字段数据复制到Table2中,代码如下:

Select * Into test_table_tp1 from test_table_draw where `borough_id`>=10266 and `borough_id` =10266 and `borough_id` <=12354)

成功了啊,您运行的 SQL 语句已经成功运行了,查询花费 0.5645 秒.

SQL 查询,代码如下:

  1. CREATE TABLE pic_test(   
  2. SELECT *    
  3. FROM test_table_draw   
  4. WHERE  `borough_id` >=10266   
  5. AND  `borough_id` <=12354   
  6. )  
标签:

给我留言