если я хочу удалить некоторые данные в mysql, могу ли я использовать удаление из таблицы, где xxx='xxx', а indexID отсутствует (выберите * таблицу a, где xxx='xxx limit 3)?

avatar
Andy
9 августа 2021 в 01:35
78
0
0

если я хочу удалить некоторые данные в mysql, могу ли я использовать

delete from table where xxx='xxx' and indexID not in (select * table where xxx='xxx limit 3)??

потому что, когда я использовал этот код, я получил ошибку.

Я умею работать в mssql,

DELETE FROM table WHERE xxx = 'xxx' AND indexID NOT IN (SELECT TOP(3) indexID FROM table WHERE xxx = 'xxx' ORDER BY check_date DESC

Источник
Wadih M.
9 августа 2021 в 01:38
0

В вашем вложенном запросе его не следует выбирать *, но он должен выбирать только столбец идентификатора

Tim Biegeleisen
9 августа 2021 в 01:44
2

I got the error ... что за ошибка? Также обратите внимание, что использование LIMIT без ORDER BY обычно не имеет смысла. Вы должны объяснить логику вашего запроса, возможно, добавив примеры данных.

Andy
9 августа 2021 в 01:54
0

@WadihM. Я пробовал использовать SELECT indexID FROM sis_User_password_check WHERE userid = 'admin' по chk_date, но получил. Эта версия MySQL еще не поддерживает подзапрос LIMIT & IN/ALL/ANY/SOME.

Andy
9 августа 2021 в 01:55
0

@TimBiegeleisen Потому что мне нужно удалить последние три данных

Wadih M.
9 августа 2021 в 02:03
0

Погуглив ваше сообщение об ошибке, я нашел этот пост, в котором может быть ваше решение. По сути, он использует соединение вместо подзапроса IN. coderhelper.com/questions/17892762/…. Обязательно проведите некоторое тестирование, чтобы получить правильный алгоритм

Andy
9 августа 2021 в 02:03
0

@dMd Значит, я не могу сделать это в mysql? а можно это сделать в mssql?

user6683818
9 августа 2021 в 03:36
0

Вы можете использовать соединения или двойной подзапрос, если вы удаляете и выбираете из одной и той же таблицы: coderhelper.com/questions/4471277/…

Ответы (0)