2013-06-12 53 views
0

我想跟踪一个mysql查询返回一行的次数。有没有办法通过选择INCREMENT行数据?我希望一次执行此操作,同时运行两个查询。MYSQL SELECT和INCREMENT在相同的查询?

所以一个粗略的想法,

SELECT * FROM data WHERE text in($search) & UPDATE hits=hits+1 

类似的东西。

+0

http://stackoverflow.com/questions/562693/mysql-update-and-select-in-one-pass – user20232359723568423357842364

+0

@ user20232359723568423357842364:所有这些问题的答案是可怕的......不过话又说回来,这样的查询。 :) –

+3

我认为你是MySQL上的SOL。 PostgreSQL将允许您执行UPDATE ... RETURNING,但除此之外,它可能需要在应用程序层进行处理。 –

回答

0

SELECT * FROM数据,其中文本($搜索)& UPDATE命中=命中+ 1

假设hitsdata,你可以这样做在两个查询像这样:

UPDATE data 
SET hits=hits+1 
WHERE text in($search); 

SELECT * FROM data WHERE text in($search); 

Postgres将允许您在一条语句中使用update语句中的returning *子句执行此操作,但就是这样。

+3

我进一步补充说,上述可以使用交易原子进行。 – eggyal