ВЫБРАТЬ из и УДАЛИТЬ одну и ту же строку в одном запросе

0

На данный момент у меня есть два вопроса. Первый выбирает столбец из строки. Затем второй удаляет эту строку. Поскольку оба запроса имеют дело с одной и той же строкой, мне было интересно, можно ли выполнить оба запроса в одном (чтобы уменьшить количество кода).

Я посмотрел на SELECT, а затем сразу удалил запись mysql и попытался ответить на любую кухню

Это был мой код заранее (который отлично работает):

$stmt = $con->prepare("SELECT number FROM viewings WHERE username=:user");
$stmt->bindParam(':user', $user);
$stmt->execute();
$row = $stmt->fetch();
$result = $row['number'];

$stmt = $con->prepare("DELETE FROM viewings WHERE username=:user");
$stmt->bindParam(':user', $user);
$stmt->execute();

echo $result;

Это был мой код после попытки ответа:

$stmt = $con->prepare("DELETE FROM viewings WHERE username=:user IN (SELECT number FROM viewings WHERE username=:user LIMIT 1)");
$stmt->bindParam(':user', $user);
$stmt->execute();
$row = $stmt->fetch();
$result = $row['number'];
echo $result;

Однако я получаю следующие ошибки:

Неустранимая ошибка: исключить исключение "PDOException" с сообщением "SQLSTATE [42000]: ошибка синтаксиса или нарушение доступа: 1235 Эта версия MySQL еще не поддерживает" LIMIT & IN/ALL/ANY/SOME subquery "в /home//public_html/page.php: 47

Трассировки стека:

0/home//public_html/page.php(47): PDOStatement-> выполнить()

1 {main} брошен в /home//public_html/page.php в строке 4

  • 1
    Вы не получите содержание или viewings из этого запроса.
  • 1
    Это также не то, как вы используете IN . Синтаксис: WHERE columnName IN ('value1', 'value2', ...) .
Показать ещё 6 комментариев
Теги:
pdo

1 ответ

0

Вы можете попробовать использовать условие EXISTS:

DELETE FROM viewings WHERE EXISTS (SELECT * FROM viewings WHERE username=:user LIMIT 1)

Источник: условие SQL EXISTS

Ещё вопросы

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