表: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/