Для одного PHP проекта сделал такую таблицу. Это карта с ячейками (x,y), которые можно занять.
Возможность занять - колонка `register`.
CREATE TABLE `map` (
 `x` smallint(4) unsigned NOT NULL,
 `y` smallint(4) unsigned NOT NULL,
 `img` varchar(100) NOT NULL,
 `possible` tinyint(1) NOT NULL,
 `register` tinyint(1) NOT NULL,
 `uid` mediumint(10) unsigned NOT NULL default '0',
 `tid` mediumint(10) unsigned NOT NULL default '0',
 PRIMARY KEY  (`x`,`y`,`register`),
 KEY `possible` (`possible`),
 KEY `register` (`register`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
 
Требуется выбирать из таблицы свободные ячейки. Делаю запрос вида
SELECT * FROM `map` WHERE x BETWEEN 0 AND 10 AND y BETWEEN 0 AND 10 AND register=1
 
Но проблема в том, в этом случае порядок ячеек будет:
x | y
0 | 0
0 | 1
0 | 2
0 | 3
....
 
Верхняя часть рисунка.
А мне нужно, чтобы ячейки выбирались "по спирали", т.е. постепенно заполняя карту, увеличивая радиус (Нижняя часть рисунка). 
Есть ли у MySQL возможность отсортировать значения особым образом или может можно это сделать через хранимые процедуры.
					
Прикрепленные файлы: 
						
 map.jpg, Размер: 17,306 байт, Скачано: 610