gpt4 book ai didi

mysql - 如果另一张表满足条件,则更新一张表

转载 作者:行者123 更新时间:2023-11-29 07:32:31 25 4
gpt4 key购买 nike

我想知道这是否可以在单个查询中完成(我已经尝试编写一个查询很长一段时间了,但我什么也没想到)

我有两个表:

门票

+----------+-----+-----------+
| ticketid | win | processed |
+----------+-----+-----------+
| 1 | 0 | 0 |
| 2 | 0 | 0 |
| 3 | 0 | 0 |
+----------+-----+-----------+

参加过比赛

+---------+----------+-----+-----------+
| matchid | ticketid | win | processed |
+---------+----------+-----+-----------+
| 1233 | 1 | 1 | 1 |
| 3144 | 1 | 0 | 1 |
| 1334 | 2 | 1 | 1 |
| 4441 | 2 | 1 | 1 |
| 1442 | 3 | 0 | 0 |
| 9723 | 3 | 1 | 1 |
+---------+----------+-----+-----------+

我需要的是根据给定 playedmatches 中的所有行的规则更新 tickets.wintickets.processed Playmatches.ticketid 已处理。如果可以说,每场 ticketid = 2 的比赛都是 processed = 1 我需要将 tickets.processed 更新为 1。此外,如果所有的都已处理匹配项为 win = 1,然后是 tickets.win = 1

在这种情况下,门票表应该像这样:

+----------+-----+-----------+
| ticketid | win | processed |
+----------+-----+-----------+
| 1 | 0 | 1 |
| 2 | 1 | 1 |
| 3 | 0 | 0 |
+----------+-----+-----------+

我有一些想法如何在 php 中使用 2 个 MySQL 调用来做到这一点,但我真的想弄清楚是否可以只用一个查询来完成。

最佳答案

如果您确实想在单个查询中包含它,您可以测试如下内容:

update tickets t join (
select ticketid, if(sum(win) = count(*), 1, 0) as allwin
from playedmatches
group by ticketid
having sum(processed) = count(*)
) j on j.ticketid = t.ticketid
set t.processed = 1,
t.win = if(j.allwin, 1, t.win);

关于mysql - 如果另一张表满足条件,则更新一张表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32105863/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com