Альтернатива использованию ключевого слова LIMIT в SubQuery в MYSQL

У меня есть таблица TEST со следующими столбцами: date_set (VARCHAR) date (VARCHAR) date (DATE)

Теперь я хочу выбрать 10 строк с отличным значением code_ver & code_ver NOT LIKE '% DevBld%', отсортированным по дате desc.

Поэтому я написал следующий запрос:

select * from test where code_ver IN (select DISTINCT code_ver from test where code_ver NOT LIKE '%DevBld%' ORDER by date DESC LIMIT 10); 

Этот вопрос должен идеально работать, но моя версия MySQL говорит: эта версия MySQL еще не поддерживает «LIMIT & IN / ALL / ANY / SOME subquery»,

Может ли кто-нибудь предложить мне альтернативу этому запросу?

Ошибка, которую вы получаете, не совсем из-за версии MySQL. Я думаю, что все версии поддерживают это. Вы должны изменить место LIMIT 10 и поместить его после «)». Дайте мне знать, если это сработает для вас. Я запустил рев один на мой, и он работает.

Например

 SELECT * FROM test where name IN ( SELECT DISTINCT name FROM projects WHERE name NOT LIKE "%DevBld%" ORDER by date_created DESC ) LIMIT 10; 

Обновление: попробуйте один ниже, таким образом, порядок будет работать:

  SELECT * FROM automation.e2e_projects WHERE name IN ( SELECT DISTINCT name FROM automation.e2e_projects WHERE name NOT LIKE "%DevBld%" ) ORDER by date_created DESC LIMIT 10; 

Ответ, предложенный Лейком, неверен в моей компетенции. Намерение использовать предел в подзапросе – это основной запрос, выполняемый по ограниченным записям, полученным из подзапроса. И если мы продолжаем ограничивать пределами, это делает лимит бесполезным для подзапроса.

Поскольку mysql еще не поддерживает ограничение в подзапросе, вместо этого вы можете использовать JOIN следующим образом:

  SELECT * FROM test JOIN (select DISTINCT code_ver from test where code_ver NOT LIKE '%DevBld%' ORDER by date DESC LIMIT 10) d ON test.code_ver IN (d.code_ver) ORDER BY xyz; 

Поместите подзапрос в производную таблицу:

  SELECT test.* FROM test LEFT JOIN (SELECT DISTINCT code_ver FROM mastertest WHERE code_ver NOT LIKE '%DevBld%' ORDER BY `date` DESC LIMIT 10) d USING (code_ver) WHERE d.code_ver IS NOT NULL; 

(Вы могли бы также ПРАВИЛЬНО ПРИСОЕДИНЯТЬ, что, конечно, и отказаться от внешнего условия WHERE.)