嘿,我在尝试更新数据库中的表时遇到此错误:
每个派生表必须有自己的别名
这是我尝试更新的 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)
更新
sqltemp = "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'"
oRecordset.Open sqltemp, oConnection,3,3
它给了我错误 ODBC 驱动程序不支持请求的属性。
我正在使用 Mysql 5.1 和经典 ASP。
大卫
最佳答案
为什么那里有一个选择?有必要吗?
为什么不:
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'
或者更进一步,如果两个表上的idNumber
存在外键约束(或者您可以假设每个clientoffer
条目总是有一个相应的clientinfo
条目):
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'
关于mySQL更新问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2971233/