На комментарий kazmiruk
в таком случае вам подойдет подзапрос в котором вы выбираете все LIKE записи.
SELECT * FROM (SELECT * FROM table WHERE column LIKE ?) sub
Но так как mysql инвалид во всем, то далее вам необходимо применить имитацию ROW_NUMBER()
SELECT * FROM (SELECT t.*, @row_number := @row_number + 1 AS rank FROM table t,(SELECT @row_number := 0) r WHERE t.column LIKE ?) sub
Тем самым вы выбираете все записи которые соответствуют вашему условию и проставляете им новые ID которые будут без дыр. Запрос очень быстрый.
Далее вы в основном запросе можете делать ваш запрос что был в примере с RAND(). Но вы учтите что LIKE это медленная функция поиска, а в случае с %text% она тормозит очень сильно. Опять же повторюсь, mysql это дерьмовая база для всего кроме обычного чтения по индексу и записи. В ней этого лучше не делать. Тот же postgres со своим полнотекстовым поиском сделает все на уровне сфинкса, в некоторых случаях даже быстрее.