php - 不选择 where 子句 - 排序过程 MySql

标签 php mysql stored-procedures

:ID、用户ID、NumberOfHours、WeekCommencing

该过程为每个用户添加一个新行,当任何一个用户有 12 行时,需要删除该用户最早的行并添加一个新行。否则只需添加一行。 这会保留每个用户过去 12 周的运行时间记录。

问题select count”由于某种原因没有选择 where 子句?

    CREATE DEFINER PROCEDURE `Avghours`(IN `Userid` INT, IN `Hours` DECIMAL(5,2), IN `WCdate` DATE)

    BEGIN
    DECLARE NUM INT;
    SELECT COUNT(*)
    FROM avghours
    WHERE UserID = Userid
    INTO NUM;

    IF NUM >= 12 then
    DELETE FROM avghours WHERE UserID = Userid
    ORDER BY UserID LIMIT 1;
    END IF;
    INSERT INTO avghours(
    UserID
   ,NumberOfHours
    ,WeekCommencing)
    VALUES(
    Userid
   ,Hours
   ,WCdate);

   END 

最佳答案

请勾选此项,您就会明白

   mysql> DELIMITER $$
mysql> CREATE PROCEDURE `sp_testyt`()
    -> BEGIN
    -> 
    -> DECLARE NUMM INT;
    -> SELECT count(*) FROM gg into NUMM;
    -> SELECT @NUMM;
    -> 
    -> END $$
Query OK, 0 rows affected (0.00 sec)

mysql> DELIMITER ;
mysql> call sp_testyt();
+-------+
| @NUMM |
+-------+
| NULL  |
+-------+
1 row in set (0.00 sec)

-----------更正 SP ------------

mysql> DELIMITER $$
mysql> CREATE PROCEDURE `sp_testtt`()
    -> BEGIN
    -> DECLARE NUM INT;
    -> SELECT count(*) FROM gg into @NUM;
    -> SELECT @NUM;
    -> 
    -> END $$
Query OK, 0 rows affected (0.02 sec)

mysql> DELIMITER ;
mysql> CALL sp_testtt();
+------+
| @NUM |
+------+
|    4 |
+------+
1 row in set (0.00 sec)

Query OK, 0 rows affected (0.01 sec)

更新您的删除查询

DELETE FROM avghours WHERE ID in (SELECT ID FROM avghours WHERE Userid=Userid ORDER BY ID LIMIT 1)

关于php - 不选择 where 子句 - 排序过程 MySql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38480142/

相关文章:

php - 打印前重新排列数据

php - 连接 CI 中的两个表

php - Laravel 5.1 从原始数据库(或只是一个数组)创建集合或关联数组

Mysql ODBC 5.3 驱动程序在点击测试时崩溃

mysql - 我的存储过程的返回值

javascript - 单击单选按钮时,显示/隐藏具有动态变化的 ID 或类的 div

mysql - 在Mysql中处理多个索引时最好的策略是什么

java - 是否有可能获得在数据库包中声明的常量值? (SQL 或 Java)

sql - 检索最近执行的 SQL 命令 (T-SQL)

php - 语法错误: PHP brackets issue for IF and FOREACH? [duplicate]