如何根据基于另一个表的case语句更新表? (在MySQL)
问题描述:
我有2个表:如何根据基于另一个表的case语句更新表? (在MySQL)
TBL1
- STDNum
- ID
- 检查
TBL2
- STDNum
- UpdateMe
STDNum
是共同的专栏。在TBL1中,相同的STDNum可以具有多个具有不同ID的行(在TBL2中不是这种情况)。 我想结果是更新UpdateMe
列TBL2 IF(其值设置为1)(且仅当)在TBL1的Check
列特定STDNum被全部设置为1。
任何人都可以帮我吗?或任何想法请吗?
答
UPDATE tbl2 b
INNER JOIN
(
SELECT STDNum
FROM tbl1 s
GROUP BY STDNum
HAVING MAX(s.check) = MIN(s.Check) AND
MAX(s.Check) = 1
) a ON a.STDNum = b.STDNum
SET b.UpdateMe = 1
OR
UPDATE tbl2 b
INNER JOIN
(
SELECT STDNum
FROM tbl1
GROUP BY STDNum
HAVING SUM(Check = 1) = COUNT(*)
) a ON a.STDNum = b.STDNum
SET b.UpdateMe = 1
我其实新的MySQL和我有点不明白,b和你已经包括在你的代码中的一个。它们只是变量吗?谢谢。 – Sang 2013-02-11 13:51:04
我试过你的代码,它的工作!非常感谢! :D – Sang 2013-02-11 14:05:03
'a'和'b'被称为'ALIAS'。当你有更长的表名时,它们很有用。 *如果你碰巧问我为什么选择'a'和'b'作为他们的别名,那是因为我习惯了它。* – 2013-02-11 14:08:42