mysql#1054 - 更新时'where子句'中的未知列,但可以选择

时间:2018-04-24 06:33:07

标签: mysql sql select sql-update

我很困惑这个问题。

我有purchase_list的表格就像这样:

purchase_code  item  unit  order_amount  recived_amount  price
TRX-000001        1     1             0              85  14200

然后我尝试使用此查询更新该记录:

UPDATE `purchase_list` 
SET `order_amount`='85'
WHERE `purchase_code`='TRX-000001' AND `item`='1' AND `unit`='1'

最终出现错误:

#1054 - Unknown column 'unit' in 'where clause'

但是当我SELECT查询时:

SELECT `order_amount`
FROM `purchase_list` 
WHERE `purchase_code`='TRX-000001' AND `item`='1' AND `unit`='1'

确实显示结果:

order_amount
           0

当我点击phpmyadmin的Simulate query按钮时,它会说:

Matched rows: 1

但仍然无法执行更新查询。知道如何解决我的问题吗?

3 个答案:

答案 0 :(得分:2)

检查unit列的数据类型,然后尝试

AND `unit`=1

如果unit的数据类型是`purchase_list。

的其他共享表结构

答案 1 :(得分:0)

问题的最可能原因是location上的触发器。您应该检查是否是这种情况。

第二种可能性是两个查询指向具有不同表结构的不同数据库。

答案 2 :(得分:0)

有时会由于列名和值使用相同的引号(单引号或双引号)而发生此错误。例如,在我的情况下:我使用了这两个查询

查询1:

UPDATE 'customerinvoice' 
SET 'invoice_status' = 2 
WHERE 'invoice_no' = '20200907202602_6'

查询2:

'UPDATE customerinvoice 
 SET invoice_status = 2 
 WHERE invoice_no = 20200907202602_6'

它会引发此错误。

(1054,“'where子句'中的未知列'20200907202602_6'”)

我使用以下方法解决了此问题:

查询#1

UPDATE 'customerinvoice' 
SET 'invoice_status' = 2 
WHERE 'invoice_no' = "20200907202602_6"

查询2:

'UPDATE customerinvoice 
 SET invoice_status = 2 
 WHERE invoice_no = "20200907202602_6" '

注意:我正在使用python,数据库是MySQL。