选择行SQL时递增值

时间:2013-02-10 23:47:56

标签: mysql sql

有没有办法基本上跟踪从SQL表中提取行的次数?

例如,在我的表格中,我有一个列数。每次SQL语句拉出一个特定的行(让我们称之为rowA)时,rowA的'count'值会增加1.

无论是在表格的设置中还是在声明中,都可以,但是我找不到这样的东西。

我知道我可以把它分成两个语句来实现同样的目的,但我更愿意只发送一个。

1 个答案:

答案 0 :(得分:2)

执行此操作的最佳方法是将表的读取访问权限限制为存储过程。

此存储过程将采用各种输入(过滤器选项)来确定返回哪些行。

在返回行之前,它们的计数器字段会递增。

请注意,update和select命令共享相同的where子句。

create procedure Select_From_Table1
  @pMyParameter varchar(20), -- sample filter parameter
as

-- First, update the counter, only on the fields that match our filter
update MyTable set Counter = Counter + 1 
where
  MyFilterField like CONCAT('%', @pMyParameter, '%')  -- sample filter enforcement

-- Now, return those rows
select
  *
from
  MyTable
where
  MyFilterField like CONCAT('%', @pMyParameter, '%')  -- sample filter enforcement

一个不错的选择是在数据访问层的应用程序端处理它。