Могу ли я использовать один запрос MySQL, чтобы выбрать отдельные строки, а затем непонятные строки, если предел не был достигнут?

0

Надеюсь, я объясню это правильно, мои знания о MySQL довольно ограничены.

Скажем, у меня есть таблица со строками с полем shape.

Я хотел бы выбрать группу строк из таблицы, но сначала вернуть все строки с уникальными значениями поля форма. Если у меня меньше определенного количества строк, скажем, 7, то я хотел бы заполнить оставшиеся строки результатов нестандартными строками строк. Лучше всего я могу сказать это, что они "упорядочены по уникальности, а затем по какому-либо другому значению".

Итак, я не хочу: квадрат, квадрат, круг, круг, прямоугольник, /strong > , треугольник

Я бы хотел: квадрат, круг, прямоугольник, треугольник, квадрат, квадрат, круг

Возможно ли это, используя один SQL-запрос? Я использую MySQL с PHP, если это имеет значение.

Спасибо!

  • 0
    Поле имени уникально? Если нет, у вас есть ПК на вашем столе?
  • 0
    Я только что отредактировал вопрос, чтобы удалить ссылку на поле «имя», так как я никогда не использовал его в примере, хороший улов :) В реальной таблице у меня был бы pk и все такое, но я просто хотел получить вниз к мясу вопроса и убрать все остальные вещи.
Теги:
distinct

3 ответа

1
Лучший ответ

Вначале вы можете выбрать ограниченное количество строк из комбинации отдельных значений, в объединении с вашим неповторимым запросом (который также ограничивается максимальным количеством строк, которое вы хотите получить).

т. выберите поле1, поле2,... из (выберите отдельное поле1, поле2,... из... UNION выберите поле1, поле2,... из... LIMIT MAX_ROW_COUNT) AS total LIMIT MAX_ROW_COUNT

0

Возможно, вы сможете сделать это, используя UNION (т.е. используйте два разных запроса, но просто объедините результаты)

0

Вы можете использовать UNION ALL для объединения двух разных (но одинаковых) запросов. Но я не думаю, что LIMIT работает в UNION, тогда вам придется:

SELECT уникальный запрос здесь, с лимитом 0,7 СОЮЗ ВСЕ SELECT другой запрос здесь, с лимитом 0.7

В то время как оба они имеют одинаковые значения SELECT, они объединяются в 1 результат, тогда вы можете просто отрезать все строки после 7.

Но, возможно, вы уже можете сделать LIMIT для всего UNION, чего я не знаю.

Ещё вопросы

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