Предполагая, что ваш адрес всегда в формате <numbers><space><city>
SELECT
DISTINCT TRIM(LEADING SUBSTRING_INDEX(address, ' ', 1) FROM address) AS city
FROM
locations
Вот тестовых данных я использовал для проверки запрос работает. Обратите внимание, что я назвал тестовую таблицу locations
. Мой сервер MySQL является версия 5.1.36:
--
-- Table structure for table `locations`
--
CREATE TABLE IF NOT EXISTS `locations` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`address` varchar(255) COLLATE utf8_bin DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `address` (`address`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin AUTO_INCREMENT=6 ;
--
-- Dumping data for table `locations`
--
INSERT INTO `locations` (`id`, `address`) VALUES
(1, '123 Hollywood'),
(2, '345 New York'),
(3, '847 Hollywood'),
(4, '192 Boston'),
(5, '876 Chicago');
Вот точный запрос я побежал на этой таблице:
SELECT DISTINCT TRIM(
LEADING SUBSTRING_INDEX(address, ' ', 1)
FROM address) AS city
FROM locations
Вот результат я получил:
**city**
Hollywood
Boston
New York
Chicago
Является ли число частью поле 'address', или это идентификатор записи в другом поле? Если это одно и то же поле, это может быть немного сложнее. –
Erm, не делает ли LIMIT 1' трюк? – Wrikken