Mysql的问题与案件,然后和什么时候

Mysql的问题与案件,然后和什么时候,mysql,Mysql,我正在维护一个至少有100行的数据库。每10秒进行一次ajax调用以更新行。我觉得每10秒调用100次更新查询是不可取的。所以我遇到了mysql的情况,当时和什么时候,将100个查询合并到一个查询中并进行更新。但是我在代码方面遇到了问题。这是我的两行代码 update customer_details set (date,customer_name,school_name,mobile_number,customer_email,age,area,customer_requirement,ext

我正在维护一个至少有100行的数据库。每10秒进行一次ajax调用以更新行。我觉得每10秒调用100次更新查询是不可取的。所以我遇到了mysql的情况,当时和什么时候,将100个查询合并到一个查询中并进行更新。但是我在代码方面遇到了问题。这是我的两行代码

update customer_details set (date,customer_name,school_name,mobile_number,customer_email,age,area,customer_requirement,extra_comments,draft_message) = 
 case `id`
when '275' then ('09-04-201','person1','','1234567890','','','','basketball','','message')
when '274' then  ( '','','','','','','area','xyz','','message')
end
错误是

#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 '(date,customer_name,school_name,mobile_number,customer_email,age,area,customer_r' at line 1

我无法纠正这个错误。还有其他方法可以对100行进行单个查询调用吗?

您需要在set语句中设置每一列,语法如下:

UPDATE tablename SET column1 = "value1", column2 = "value2" ....
WHERE IdDColumn = MyID
在您的情况下,您将有两个选择:

UPDATE tablename SET Column1 =  
CASE
  WHEN id = 275 THEN Value1
  WHEN id = 274 THEN Value2
  ELSE DefaultValue 
END, Column2 =  
CASE
  WHEN id = 275 THEN Value1
  WHEN id = 274 THEN Value2
  ELSE DefaultValue  
END,
etc...
您是否尝试过:

INSERT INTO customer_details (id, date,customer_name,school_name,mobile_number,customer_email,age,area,customer_requirement,extra_comments,draft_message) VALUES
(275, '09-04-201','person1','','1234567890','','','','basketball','','message'),
(274, '','','','','','','area','xyz','','message')
ON DUPLICATE KEY UPDATE 
date=VALUES(date),
customer_name=VALUES(customer_name),
school_name=VALUES(school_name),
mobile_number=VALUES(mobile_number),
customer_email=VALUES(customer_email),
age=VALUES(age),
area=VALUES(area),
customer_requirement=VALUES(customer_requirement),
extra_comments=VALUES(extra_comments),
draft_message=VALUES(draft_message);

好啊但是对于与特定id对应的多个值呢?在endUPDATE tablename SET column1=“value1”,column2=“value2”where id=1和UPDATE tablename SET column1=“value1”,column2=“value2”where id=2处添加一个where id=YourId,这样做行吗?谢谢。。我得到了亚瑟·哈尔马建议的解决方案。我也会试试你的。试过了,但由于外键限制,它没有更新或替换。显示的错误
#1451-无法删除或更新父行:外键约束失败(backend.customer\u sms,constraint customer\u sms\u ibfk\u 1外键(customer\u id)引用customer\u详细信息(id))
您在问题中未提及
FK
。现在您必须使用
插入到。。。重复更新时
语法。我又更新了一次我的答案。你可以编写一个复杂的查询来同时更新所有100行,但这会很麻烦,而且会使维护变得困难。如果您执行100个单独的常规更新查询,则会更干净;除非您的数据库服务器电源不足,否则每10秒更新100次不会导致性能问题。