首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在MySQL中实现这一点?

如何在MySQL中实现这一点?
EN

Stack Overflow用户
提问于 2012-09-28 19:05:07
回答 1查看 95关注 0票数 0

这就是我希望单独使用MySQL的方法:(不使用PHP)

PHP代码:

代码语言:javascript
复制
$result=mysql_query("select f2 from t1 where f1=constant limit L");

while( $data = mysql_fetch_row($result) )
  mysql_query("update t2 set f4=f4-1 where f3={$data[0]} limit 1");

如果您不知道PHP:

代码语言:javascript
复制
select f2 from t1 where f1=constant limit L;

for each f2 (from above result) as F:
  update t2 set f4=f4-1 where f3=F limit 1;

如何在MySQL中实现这一点?

详细信息:

在第一个select的输出中可以有重复的值,对于每个重复项,update语句将被运行。因此,如果在第一个select的输出中出现三次值'123‘,那么f4将被更新为f4-3,其中f3=123。

'L‘是表’t1‘中满足"f1=constant“条件的次数;这个数字是已知的,因此用作限制。

使用限制1是因为字段'f3‘中的值是唯一的。

EN

回答 1

Stack Overflow用户

发布于 2012-09-28 19:07:27

使用此查询,并提供缺少的参数:

代码语言:javascript
复制
UPDATE t2 SET f4 = f4 - 1

WHERE f3 IN (SELECT f2 FROM t1 WHERE f1 = ? LIMIT ?);

如果您希望对匹配的f2中的每一行进行修改(考虑到f2.t1不是唯一的),那么应该可以这样做:

代码语言:javascript
复制
UPDATE t2, t1 SET t2.f4 = t2.f4 - 1
WHERE t2.f3 = t1.f2
  AND t1.f1 = ?;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12645900

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档