我有一个场景,结果必须受到限制,这取决于计算另一个表中的 ID。
假设我有这两个表 counter
和 dispanser
,
我想选择
表counter
中的最后一条记录,并通过计算dispanser
表中的记录数来限制选择。
像这样
select * from counter limit (select count(dispID) from dispanser)
最佳答案
如果不使用准备好的语句或存储过程,就无法做到这一点。来自manual :
LIMIT takes one or two numeric arguments, which must both be nonnegative integer constants
在存储过程中,您可以这样做。 COUNT(dispID)
存储到 cnt 中,然后该变量用作 LIMIT
的参数。这是上述规则的异常(exception)情况。
DELIMITER //
CREATE PROCEDURE select_counter()
BEGIN
DECLARE cnt INT;
SELECT COUNT(dispID) INTO cnt FROM dispanser;
SELECT * FROM counter LIMIT cnt;
END //
DELIMITER ;
关于mysql - 如何使用另一个表中的 select count(id) 设置 LIMIT 的值|MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53234654/