php - 在 IF 语句中计算一个表中的行数

标签 php mysql if-statement count

是否可以在一个 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/

相关文章:

php - 动态类型语言和远程方法调用

php - PHP 嵌套包含

mysql - 给定条件时不显示任何记录 (SQL)

python - 如何创建条件列表?

php - 如何获得更多的变量值?

php - 获取wordpress数据库中最高id的问题

php - 如何对下表进行连接操作?

python - 用于数据库处理的 peewee 与 django

mysql - 如何在SQL中的三个或更多表之间进行Group By

objective-c - #define 或#if 语句错误