【问题标题】:Mysql on select update records selectedMysql on select update records selected
【发布时间】:2015-01-27 09:49:18
【问题描述】:

我有 mysql 表帖子

Posts
  PostId (int)
  PostTitle (varchar)
  PostContent (text)
  PostHits (int)
  PostStatus (varchar)

我在选择查询中阅读了这些记录,例如

SELECT * FROM posts WHERE PostStatus LIKE 'ALIVE';

如果所有记录符合 where 子句,是否有可能在每次选择时增加 PostHits 的值?如果是,那么最好的方法是什么,目前我正在使用两个查询选择然后根据where id in(all selected posts ids) 进行更新。我正在寻找单一查询解决方案。

【问题讨论】:

  • 增量多少?

标签: php mysql sql codeigniter


【解决方案1】:

这是你需要的吗?

UPDATE posts
SET PostHits = PostHits + 1
WHERE PostStatus LIKE 'ALIVE'

仅使用SELECT

SELECT
    PostId,
    PostTitle,
    PostContent,
    PostHits + 1 AS PostHits,
    PostStatus
FROM posts
WHERE PostStatus LIKE 'ALIVE'

【讨论】:

  • 这是一个单独的查询,我想在选择查询中进行此更新
  • 与您的第二个查询非常相似,但您的第二个查询不会更新表记录,它只是在选择时显示递增的值。
  • 怎么样?这是两个单独的查询,我想要单个查询解决方案,假设我的查询选择 20 条记录,我真的应该执行 20 条额外的查询来更新每条记录的命中吗?
  • 不!您所要做的就是执行UPDATE。它将使用PostStatus = 'ALIVE' 更新所有行。
猜你喜欢
  • 2011-08-09
  • 1970-01-01
  • 2011-01-29
  • 2015-12-29
  • 1970-01-01
  • 2020-07-20
  • 2010-12-29
  • 2013-10-25
  • 2014-03-10
相关资源
最近更新 更多