首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不选择子句排序过程MySql的位置

问不选择子句排序过程MySql的位置
EN

Stack Overflow用户
提问于 2016-07-20 11:33:14
回答 1查看 17关注 0票数 0

Table:ID, UserID, NumberOfHours, WeekCommencing

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

PROBLEM "select count“由于某种原因没有选择where子句?

代码语言:javascript
复制
    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 
EN

回答 1

Stack Overflow用户

发布于 2016-07-20 11:46:41

请检查一下,你会明白重点的

代码语言:javascript
复制
   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)
代码语言:javascript
复制
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)

更新删除查询

代码语言:javascript
复制
DELETE FROM avghours WHERE ID in (SELECT ID FROM avghours WHERE Userid=Userid ORDER BY ID LIMIT 1)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38480142

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档