是否可以在一个 sql 语句中检查表中的行数是否为 0 然后执行插入?
这是我尝试过的查询,但它说我有语法错误:
$query =
"IF (SELECT COUNT(ID) FROM votes WHERE userid = $userid AND itemid = $itemid AND itemtype=1) = 0
INSERT INTO votes (itemtype, itemid, userid) VALUES (1, $itemid, $userid)
SELECT 1 AS result
ELSE
SELECT 0 AS result
END IF";
我知道 SELECT COUNT 位可以自行成功运行。
最佳答案
不知道这是否是解决此问题的最佳方法,但它会起作用。基本上,如果条件为假,它只会导致错误,因此它会阻止插入:
-- make itemtype not nullable then simply insert
INSERT INTO votes SELECT
CASE
WHEN
(SELECT COUNT(ID)
FROM votes
WHERE userid = $userid AND itemid = $itemid AND itemtype=1) = 0 THEN 1
ELSE NULL
END CASE,
$itemid, $userid;
关于php - 在 IF 语句中计算一个表中的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9740038/