0

一个相当简单的问题,但我只能找到更复杂问题的答案。

我正在处理一个存储过程,目前正在一个 REPEAT 循环中。我需要在循环中运行以下查询以获取返回的 1 列值(仅返回 1 条记录)。这需要存储为 var 以便稍后在循环中使用。

从照片中选择 photo_id ORDER BY photo_id DESC LIMIT 1;

如何将其设置为“last_photo_id”以便稍后在存储过程中使用?

4

3 回答 3

1

可以这样做:

SELECT @varname := photo_id
FROM photos
ORDER BY photo_id DESC
LIMIT 1;

也就是说,如果您确定除了循环之外没有其他方法可以做您想做的事情。当您将 SQL 用于基于集合的解决方案时,它的效果最好。

于 2012-03-13T14:18:30.640 回答
0

你可以使用一个函数例如

  SET i_camera_count = get_camera_count(i_photo_camera_data_id);

然后做一个这样的功能。

DELIMITER $$

DROP FUNCTION IF EXISTS `get_camera_count` $$
CREATE DEFINER=`root`@`localhost` FUNCTION `get_camera_count`(camera_id_2 INT(10)) RETURNS int(11)
BEGIN
  DECLARE v_return_val INT;
  DECLARE CONTINUE HANDLER FOR NOT FOUND SET v_return_val = -1;


 SELECT x FROM y WHERE camera_id = camera_id_2

  RETURN v_return_val;
END $$

DELIMITER ;
于 2012-03-13T14:13:40.203 回答
0

尝试这个:

 DECLARE total_products INT DEFAULT 0
 SELECT COUNT  INTO total_products
 FROM products 
于 2012-03-13T14:15:30.563 回答