У меня есть 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 точно для того, чтобы проверить, существует ли строка в таблице.