Надеюсь, я объясню это правильно, мои знания о MySQL довольно ограничены.
Скажем, у меня есть таблица со строками с полем shape.
Я хотел бы выбрать группу строк из таблицы, но сначала вернуть все строки с уникальными значениями поля форма. Если у меня меньше определенного количества строк, скажем, 7, то я хотел бы заполнить оставшиеся строки результатов нестандартными строками строк. Лучше всего я могу сказать это, что они "упорядочены по уникальности, а затем по какому-либо другому значению".
Итак, я не хочу: квадрат, квадрат, круг, круг, прямоугольник, /strong > , треугольник
Я бы хотел: квадрат, круг, прямоугольник, треугольник, квадрат, квадрат, круг
Возможно ли это, используя один SQL-запрос? Я использую MySQL с PHP, если это имеет значение.
Спасибо!
Вначале вы можете выбрать ограниченное количество строк из комбинации отдельных значений, в объединении с вашим неповторимым запросом (который также ограничивается максимальным количеством строк, которое вы хотите получить).
т. выберите поле1, поле2,... из (выберите отдельное поле1, поле2,... из... UNION выберите поле1, поле2,... из... LIMIT MAX_ROW_COUNT) AS total LIMIT MAX_ROW_COUNT
Возможно, вы сможете сделать это, используя UNION
(т.е. используйте два разных запроса, но просто объедините результаты)
Вы можете использовать UNION ALL для объединения двух разных (но одинаковых) запросов. Но я не думаю, что LIMIT работает в UNION, тогда вам придется:
SELECT уникальный запрос здесь, с лимитом 0,7 СОЮЗ ВСЕ SELECT другой запрос здесь, с лимитом 0.7
В то время как оба они имеют одинаковые значения SELECT, они объединяются в 1 результат, тогда вы можете просто отрезать все строки после 7.
Но, возможно, вы уже можете сделать LIMIT для всего UNION, чего я не знаю.