Обновите строку таблицы, если строка существует в некоторой таблице с использованием SQL

0

У меня есть 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");

Но я получаю ошибку.

Что случилось?

  • 3
    подсказка: используйте Обновить для обновления. Также, пожалуйста, опубликуйте ошибку.
  • 0
    Что вы хотите обновить?
Показать ещё 3 комментария
Теги:

1 ответ

1

Если вы хотите обновить таблицу, вы можете использовать синтаксис следующим образом:

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню