Mysql 如何正确地将varchar转换为int?

Mysql 如何正确地将varchar转换为int?,mysql,sql,phpmyadmin,Mysql,Sql,Phpmyadmin,我已经准备了这样的sql查询 UPDATE Towar JOIN TowarZamowienie ON Towar.Tow_id = TowarZamowienie.Tow_id SET Tow_ilosc = Tow_ilosc - CAST(TowZam_ilosc AS UNSIGNED); 它会返回修改过的记录:0。我承认数据库里有记录 这是我的桌子: TowarZamowienie 1 TowZam_id int(19) AUTO_INCREMENT 2

我已经准备了这样的sql查询

UPDATE Towar
JOIN TowarZamowienie ON Towar.Tow_id = TowarZamowienie.Tow_id
SET Tow_ilosc = Tow_ilosc - CAST(TowZam_ilosc AS UNSIGNED);
它会返回修改过的记录:0。我承认数据库里有记录

这是我的桌子:

TowarZamowienie 

1   TowZam_id         int(19) AUTO_INCREMENT   
2   Tow_id            int(255)            
3   Zam_id            int(255)             
4   TowZam_ilosc      varchar(10)

这是我的模式

试试这段代码

  UPDATE Towar
 JOIN 
    TowarZamowienie ON Towar.Tow_id = TowarZamowienie.TowZam_id
 SET 
    Tow_ilosc = Tow_ilosc - CAST(TowZam_ilosc AS UNSIGNED);
为什么不将整数“强制”为Varchar?如果Varchar实际上有10个字符,而整数只需要6个数字呢?试试这个:

CAST(Tow_ilosc as CHAR(10))

或者在where子句中使用类似的

WHERE Tow_ilosc LIKE TowZam_ilosc

(我不喜欢)^^ ^

我想你在ON子句中犯了错误

试试这个

    ON Towar.Tow_id = TowarZamowienie.TowZam_id

--或


看看这个。。。可能重复@chris_techno25这不是重复的,因为我没有错误。如果可能,展示你的示例数据或小提琴!啊,我明白了,那么我是对的。如果您向我们展示一个示例数据,肯定会更容易:)@echo\u Me这里的值必须先从字符串转换为int看看这个,它应该更改值,其中tow\u id与towarzamovienie@user3310883中的tow\u id相同,我已经看到了图像,但您有两个zam\u ilosc是0根据two\u zam 5,这将是99?在这种情况下,它应该返回100-0=100,没有变化,但当TowZam_ilosc为例如1时,它应该在Towar中返回99。Tow_iloscI不明白为什么Towar id为16或更多的Towar发生了变化。。在这种情况下,唯一修改的Towar应该是Towar id为5的Towar,请尝试对您发布的示例使用代码格式。使它更容易阅读。谢谢:)
WHERE Tow_ilosc LIKE TowZam_ilosc
    ON Towar.Tow_id = TowarZamowienie.TowZam_id
UPDATE Towar, TowarZamowienie
SET Towar.Tow_ilosc = Towar.Tow_ilosc - CAST(TowarZamowienie.TowZam_ilosc AS UNSIGNED)
WHERE Towar.Tow_id = TowarZamowienie.TowZam_id;
UPDATE Towar
JOIN TowarZamowienie ON Towar.Tow_id = TowarZamowienie.TowZam_id
SET Tow_ilosc = Tow_ilosc - CAST(TowZam_ilosc AS UNSIGNED);