我有sql查询:
SELECT COUNT(*) AS c
FROM plan_acl
WHERE plan_id = (SELECT id
FROM plan
WHERE unicateHash = '2xxxxxxxxxxxxMcxXqZoydkOltnadm1Uf' LIMIT 1)
返回 c 作为计数。像这样:
c = 1
或
c = 0
如果c = 1
,我想要更新表。我怎样才能做到这一点?
我尝试:
SELECT IF(SELECT COUNT(*) AS c
FROM plan_acl
WHERE plan_id = (SELECT id
FROM plan
WHERE unicateHash = '2xxxxxxxxxxxxMcxXqZoydkOltnadm1Uf' LIMIT 1).c = 1, "YES", "NO");
但是我收到错误。
出了什么问题?
最佳答案
如果你想更新表格,你可以使用如下语法:
UPDATE plan_acl a
SET isActive = 0
WHERE EXISTS (SELECT 1
FROM plan p
WHERE p.id = a.plan_id AND p.unicateHash = '2xxxxxxxxxxxxMcxXqZoydkOltnadm1Uf'
);
请注意,使用 limit 1
和 =
的方法几乎执行相同的操作,但 EXISTS
内置于 SQL 语言中,用于正是测试表中是否存在行的目的。
关于mysql - 如果使用 SQL 某些表中存在行,则更新表行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49632408/