我很困惑这个问题。
我有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
但仍然无法执行更新查询。知道如何解决我的问题吗?
答案 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。