2013-11-04 90 views
2

我想用下面的查询用新数据更新的数据库列表:更新数据库表columna

update visit set day = px 
from (values (1, 'Thursday'), (2, 'Friday'), (3, 'Friday'), (4, 'Friday'),(5,'Friday'),(6,'Friday'),(7,'Saturday'),(8,'Saturday'), 
(9,'Saturday'),(10,'Saturday'),(11,'Saturday'),(12,'Saturday'),(13,'Saturday'),(14,'Saturday'),(15,'Saturday'), 
    (16,'Saturday'),(17,'Saturday'),(18,'Saturday'),(19,'Saturday'),(20,'Saturday'),(21,'Saturday'),(22,'Saturday'),(23,'Saturday'),(24,'Saturday'), 
    (25,'Saturday'),(26,'Saturday'),(27,'Saturday'),(28,'Saturday'),(29,'Saturday'),(30,'Saturday') 
    (31,'Saturday'),(32,'Saturday'),(33,'Saturday'),(34,'Saturday'),(35,'Saturday'),(36,'Saturday'),(37,'Saturday'),(38,'Saturday'),(39,'Saturday'),(40,'Saturday') 
    ,(41,'Saturday'),(42,'Saturday'),(43,'Saturday'),(44,'Saturday'),(45,'Saturday') 
    ,(46,'Saturday'),(47,'Saturday'),(48,'Saturday'),(49,'Saturday'),(50,'Saturday'), 
    (51, 'Saturday'), (52, 'Saturday'), (53, 'Saturday'), (54, 'Saturday'),(55,'Saturday'),(56,'Saturday'),(57,'Saturday'),(58,'Saturday'),(59,'Saturday'), 
    (60,'Saturday'),(61,'Saturday'),(62,'Saturday'),(63,'Saturday'),(64,'Saturday'),(65,'Saturday'), 
    (66,'Saturday'),(67,'Saturday'),(68,'Saturday'),(69,'Saturday'),(70,'Saturday'),(71,'Saturday'),(72,'Saturday'),(73,'Saturday'),(74,'Saturday'),(75,'Saturday'), 
    (76,'Saturday'),(77,'Saturday'),(78,'Saturday'),(79,'Saturday'),(80,'Saturday') 
    (81,'Saturday'),(82,'Saturday'),(83,'Saturday'),(84,'Saturday'),(85,'Saturday'),(86,'Saturday'),(87,'Saturday'),(88,'Saturday'),(89,'Saturday'),(90,'Saturday'),(91,'Saturday'),(92,'Saturday'),(93,'Saturday'),(94,'Saturday'),(95,'Saturday') 
    ,(96,'Saturday'),(97,'Saturday'),(98,'Saturday'),(99,'Saturday'),(100,'Saturday'), 
    (101, 'SaturdaySaturdaySaturdaySaturday'), (102, 'Saturday'), (103, 'Saturday'), (104, 'Saturday'),(105,'SaturdaySaturday'),(106,'Saturday'),(107,'Saturday'),(108,'Saturday'),(109,'Saturday'),(110,'Saturday'),(111,'Saturday'),(112,'Saturday'),(113,'Saturday'),(114,'Saturday'),(115,'Saturday'), 
    (116,'Saturday'),(117,'Saturday'),(118,'Monday'),(119,'Monday'),(120,'Tuesday'),(121,'Tuesday'),(122,'Wednesday'),(123,'Thursday'),(124,'Thursday'),(125,'Tuesday'),(126,'Thursday'),(127,'Thursday'),(128,'Thursday'),(129,'Thursday'),(130,'Thursday') 
    (131,'Thursday'),(132,'Thursday'),(133,'Tuesday'),(134,'Friday'),(135,'Friday'),(136,'Friday'),(137,'Tuesday'),(138,'Wednesday'),(139,'Wednesday'),(140,'Friday'),(141,'Friday'),(142,'Monday'),(143,'Wednesday'),(144,'Wednesday') 
    ,(145,'Tuesday'),(146,'Wednesday'),(147,'Tuesday''),(148,'Wednesday'),(149,'Thursday'),(150,'Friday'),(151,'Friday'),(152,'Monday'),(153,'Tuesday'),(154,'Friday'),(155,'Thursday'),(156,'Thursday'),(157,'Tuesday') 
    ) p(i, px)where i = id; 

当我运行查询,我得到以下错误:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'from (values (1, 'Thursday'), (2, 'Friday'), (3, 'Friday'), (4, 'Friday'),(5,'Fr' at line 2 

我一直无法弄清楚,我怎么解决这个问题呢?

+0

你究竟在做什么? – Strawberry

+0

我想插入新的数据到一个新的列我有一个表中有data.But上面的查询给了我一个SQL语法 –

回答

4

要测试更新脚本创建这个表:

create table visit(day varchar(20), id int); 
insert visit(day, id) 
select 'Monday', 1; 

更新:日

update visit 
inner join 
(
select 1 i, 'Thursday' px 
union all 
select 2, 'Friday' 
union all 
select 3, 'Friday' 
union all 
select 4, 'Friday' 
union all 
select 5,'Friday' 
-- fill in the rest 
) p 
on p.i = visit.id 
set day = p.px 

确认值发生了变化:

select * from visit 

结果:

DAY  ID 
Thursday 1 

Fiddle

+0

为什么这是upvoted? – Strawberry

+0

@Strawberry更重要,你为什么倒戈呢?除了从问题中删除和粘贴某些缺失的逗号之外,语法是正确的。我以为我没有想到验证数据 –

+0

我低估了它,因为你替换了一个不适用于另一个不起作用的查询。这有帮助吗? – Strawberry