У меня есть следующий SQL-запрос
SELECT * FROM train_stop where code='ABC' OR code='XYZ' OR code='DEF' group by number order by departs
Теперь, поскольку я использую Group By
чтобы взять только одну строку с определенным номером. Но я хочу определить приоритет результата. Это означает, что если моя таблица имеет код = «ABC» и код = «XYZ», тогда результат должен выбрать строку ABC
а не «XYZ», потому что ABC заняла первое место в разделе where. Аналогично, если таблица имеет XYZ
и DEF
для одного и того же номера, XYZ
должен появиться в результате, а не DEF
. До сих пор мои эксперименты привели меня к тому, что его хау на случайной основе. Мне было бы полезно, если бы вы могли помочь мне достичь этой и правильной стратегии индексирования для этого случая. Благодарю.
Оператор create выглядит следующим образом:
Create Statement is `CREATE TABLE `train_stop` ( `number` varchar(1000) NOT NULL, `stop_number` int(11) NOT NULL, `code` varchar(1000) NOT NULL, `station name` varchar(1000) NOT NULL, `arrives` time NOT NULL, `departs` time NOT NULL, `halt` varchar(1000) NOT NULL, `pf` varchar(1000) NOT NULL, `day` int(11) NOT NULL, `km` varchar(1000) NOT NULL, `speed` varchar(1000) NOT NULL, `elev` varchar(1000) NOT NULL, `zone` varchar(1000) NOT NULL, `address` varchar(1000) NOT NULL, `active` int(11) DEFAULT '1', KEY `index_1` (`number`(767),`code`(767)), KEY `PIndex` (`number`(767),`stop_number`), KEY `three_columns_idx` (`code`(767),`active`,`departs`), KEY `two_columns_idx` (`code`(767),`active`), KEY `two_columns_group_idx` (`number`(767),`departs`), KEY `one_columns_group_idx` (`departs`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1`