Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
mySQL更新问题_Mysql_Sql Update_Mysql Error 1248 - Fatal编程技术网

mySQL更新问题

mySQL更新问题,mysql,sql-update,mysql-error-1248,Mysql,Sql Update,Mysql Error 1248,嘿,我在尝试更新数据库中的表时遇到此错误: 每个派生表都必须有自己的别名 以下是我尝试更新的mysql查询: UPDATE (SELECT clientinfo.idNumber, clientinfo.theCompName, clientoffers.idNumber, clientoffers.expTimeWaiting, clientoffers.theDateStart, clientoffers.theDateEnd, clientoffers.theOffer, clie

嘿,我在尝试更新数据库中的表时遇到此错误:

每个派生表都必须有自己的别名

以下是我尝试更新的mysql查询:

 UPDATE (SELECT clientinfo.idNumber, clientinfo.theCompName, clientoffers.idNumber, 
 clientoffers.expTimeWaiting, clientoffers.theDateStart,
 clientoffers.theDateEnd, clientoffers.theOffer, clientoffers.isActive, 
 clientoffers.theType, clientoffers.fixedAmount, clientoffers.fixedUsed
 FROM clientinfo, clientoffers
 WHERE clientoffers.idNumber = clientinfo.idNumber
 AND clientoffers.theDateEnd >= '2010-06-03'
 AND clientoffers.theDateStart <= '2010-06-03'
 AND clientoffers.idNumber = 'NB351560'
 AND clientoffers.isActive = 'YES')
 SET clientoffers.fixedUsed = clientoffers.fixedUsed + 1
这似乎没问题,但不知什么原因似乎不起作用

任何帮助都会很好o

更新

这给了我一个错误 ODBC驱动程序不支持请求的属性

我正在使用Mysql 5.1和经典ASP


大卫

客户服务商。在括号外无效,因此需要为select语句创建别名try UPDATE select。。。foo SET foo.fixedUsed=foo.fixedUsed+1

但是,一次更新一个表更简单:

UPDATE clientoffers
SET fixedUsed = fixedUsed + 1
WHERE
EXISTS (SELECT * FROM clientinfo WHERE
clientoffers.idNumber = clientinfo.idNumber)
AND clientoffers.theDatEnd >= '2010-06-03'
AND clientoffers.theDateStart <= '2010-06-03'
AND clientoffers.idNumber = 'NB351560'
AND clientoffers.isActive = 'YES
除此之外,根据MySQL版本,可能不支持EXISTS子查询语法。如果您是这样,您可以:

a。升级MySQL或切换到其他DB引擎
B使用代码在循环中运行select,然后针对每个返回的行发出一条update语句,记住锁定两个表。

为什么会有select?这有必要吗

为什么不:

 UPDATE clientinfo, clientoffers

 SET clientoffers.fixedUsed = clientoffers.fixedUsed + 1

 WHERE clientoffers.idNumber = clientinfo.idNumber
 AND clientoffers.theDateEnd >= '2010-06-03'
 AND clientoffers.theDateStart <= '2010-06-03'
 AND clientoffers.idNumber = 'NB351560'
 AND clientoffers.isActive = 'YES'

这样做会产生一个错误,即您无法从clauseI'm no ASP expert中指定更新的目标表'clientoffers'。虽然从外观上看,您正在尝试检索oRecordSet.open返回的行。update语句实际上并不返回行,因此您可能需要使用ado命令,因为它最终导致每个sql行末尾的&\出现问题。把那些拿出来,它工作得很好。谢谢Vin-G!:哦,对!您可能仍然可以通过在字符串ie和clientoffers中添加一个尾随空格来保留这些内容。不管怎样,不客气。
 UPDATE clientinfo, clientoffers

 SET clientoffers.fixedUsed = clientoffers.fixedUsed + 1

 WHERE clientoffers.idNumber = clientinfo.idNumber
 AND clientoffers.theDateEnd >= '2010-06-03'
 AND clientoffers.theDateStart <= '2010-06-03'
 AND clientoffers.idNumber = 'NB351560'
 AND clientoffers.isActive = 'YES'
 UPDATE clientoffers

 SET clientoffers.fixedUsed = clientoffers.fixedUsed + 1

 WHERE clientoffers.theDateEnd >= '2010-06-03'
 AND clientoffers.theDateStart <= '2010-06-03'
 AND clientoffers.idNumber = 'NB351560'
 AND clientoffers.isActive = 'YES'