mysql - 如何将查询结果存储到变量中?

标签 mysql sql

这是我的代码:

BEGIN     
    IF (new.edited_id IS NULL) THEN
        IF (SELECT 1 FROM users WHERE id = new.author_id AND IFNULL((active & b'1000000' > 0), 0) < 1) THEN
            SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = "you cannot ask anymore";
        ELSEIF (SELECT 1 FROM users WHERE id = new.author_id AND IFNULL((active & b'10000000' > 0), 0) < 1) THEN
            SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = "you cannot answer anymore";
        END IF;
    ELSE 
        IF (SELECT 1 FROM users WHERE id = new.author_id AND IFNULL((active & b'100000000' > 0), 0) < 1) THEN
            SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = "you cannot edit anymore";
        END IF;
END

如您所见,这些内部 IF 语句的条件几乎相同。那么我该如何改进呢?我的意思是如何将该查询的结果存储到变量中,然后使用该变量作为条件?

最佳答案

您现在可以在 if 语句中使用变量 condition

SET @condition := (SELECT 1 FROM users WHERE id = new.author_id AND IFNULL((active & b'1000000' > 0), 0) < 1);

关于mysql - 如何将查询结果存储到变量中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39192970/

相关文章:

sql - 当 where 子句仅包含索引的第一列时,为什么不使用索引?

python - 在python中上传web文件到mysql

php - 登录时通过 ajax 连接到 mysql 返回的 json 中有 html 代码

来自 mysql 列的 PHP 数组

sql - 为什么我不能在 have 子句中为聚合使用别名?

java - JPA 规范等同于 ResultTransformer.DISTINCT_ROOT_ENTITY?

sql - 防止扳机发射

php - SQL多结果问题

MySQL - 如果字段有值,则选择行,否则选择空值

php - 我应该在 PHP 应用程序中的什么位置存储我的数据库用户名和密码?