不知道如何问这个,但是我有一个产品及其价格的数据库。该价格包括3列(当前价格,折扣价格,先前价格)。
我使用fgetcsv()读取新记录的CSV,然后使用下面的Mysqli查询将新记录插入或更新到我的数据库:$query = "INSERT INTO products (prodname,currprice,prevprice,discprice) VALUES ('$EachRow[0]','$EachRow[1]','$EachRow[2]','$EachRow[3]') ON DUPLICATE KEY UPDATE currprice='$EachRow[1]';";
问题是现有产品。我只想在其prevprice与currprice不同时更新其currprice,并且要更新它们,必须使用新的currprice。我希望在mysqli中找到类似的东西"UPDATE IF $EachRow[1]<>currprice SET prevprice=currprice,currprice='$EachRow[1]'"
基本上对于现有记录,如果当前价格已更改,我希望将之前的价格记录为prevprice,然后再将currprice更新为新的$ EachRow [1]。
有没有办法做到这一点?我们可以在mysqli查询中制作IF语句吗?
最佳答案
是的,您可以在IF
之后使用Duplicate Key Update
子句
INSERT INTO tbl (name, some_column, some_other)
VALUES (username, some_data)
ON DUPLICATE KEY UPDATE
some_other = IF(some_other > somevalue, "in_case_if_cond_is_true", "in_case_if_cond_is_false")
这些称为Flow Control Operators,MariaDB控制流Knowledge Base
根据Maria DB
IF(expr1,expr2,expr3)
如果
expr1
是TRUE
(expr1 <> 0 and expr1 <> NULL)
,则IF()
返回expr2
;否则返回expr3
关于php - PHP Mysql字段值基于另一个字段值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37413677/