mysql - 选择一行时增加一个值 SQL

标签 mysql sql

有什么方法可以基本上跟踪从 SQL 表中提取一行的次数吗?

例如,在我的表中,我有一个列数。每次 SQL 语句提取特定行(我们称之为 rowA)时,rowA 的“count”值都会增加 1。

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

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

最佳答案

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

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

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

请注意,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

一个不错的替代方案是在数据访问层的应用程序端处理它。

关于mysql - 选择一行时增加一个值 SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14804017/

相关文章:

php - 将数组发送到 mysql 行并再次将其分解为变量

php - 如何使用PHP MYSQL使用的sql查询通过添加自己的行来选择记录

mysql - 如何编写测试一对多表中两列的 select 语句

SQL - Postgres - 返回最新日期的最大值

sql - 使用 proc sql 更新

sql - 归档超过 1,000,000,000 行的巨大表的最佳实践

MySql - 如何将存储的函数存储在表中?

php - 编辑: getting null value in a join statement if the value does not exist

mysql - 使得主键+常量可以使用索引

MYSQL选择代表不同工作室的销售人员(不重复)