В SQL нет номеров строк.
Если вопрос: "Каким по порядку окажется запись с id=5 про таком-то запросе", то
SELECT count(1) FROM table WHERE type=0 AND id<=5 ORDER BY id ASC
Конечно, я имел ввиду порядок строк в результате SELECT-запроса.Что такое "номер строки"? В таблице строки не находятся в каком-либо определенном порядке. Вопрос о "порядке строк" для таблицы не имеет смысла. Можно говорить о порядке строк в результате SELECT-запроса и только если указан какой-то ORDER BY. В этом случае все ровно как с ID.
Предваряя следующий вопрос: если текстовое поле не уникально и задан order by по этому полю, вопрос порядка строк с одинаковым текстовым полем тоже не имеет смысла - он неопределен. В этом случае надо делать order by ТекстовоеПоле, id и далее по списку.
сначала нам известен только хэш. вы предлагаете воспользоваться первым предложенным запросом?давай упростим сначала задачу? пусть нам будет известен не хэш, а id записи. тогда ты сможешь узнать, на какой сроке она находится?
Спасибо за ценный комментарий. Я не силён в mysql, поэтому и обратился за помощью. Естественно, предварительно попытавшись решить задачу самостоятельно.вообще я предлагаю подумать.
ну да ладно, не обращай внимания
Нужно для определения номера очереди. Не совсем ясно как выбрать ВСЕ СТРОКИ до нужной, если у нужной известен только hash.1) пишешь запрос, который выбирает все строки ДО нужной (включая или не включая ту нужную, неважно - ну будет +1 или -1). раз у тебя есть сортировка, значит ты можешь воспользоваться условиями "меньше/больше" в where
2) меняешь запрос на select count
хотя я не понимаю, зачем это нужно. постраничная навигация?
Не хамите, пожалуйста. Если не можете помочь, проходите в соседнюю тему, не тратьте своё драгоценное время. Качественный в подписи контент и ко мне он не имеет отношения.а что - по хэшу id узнать нельзя?
убрал бы подпись, качественный ты наш
яб сказал наоборот, каждое индексное поле имеет свой порядок!В таблице строки не находятся в каком-либо определенном порядке.
это сделать легко зная запрос, fixxxer, совсем недавно self join писал...Нужно для определения номера очереди. Не совсем ясно как выбрать ВСЕ СТРОКИ до нужной, если у нужной известен только hash.
не сметь подымать голос на учителя!Если не можете помочь, проходите в соседнюю тему, не тратьте своё драгоценное время.
Да, конечно!яб сказал наоборот, каждое индексное поле имеет свой порядок!
CREATE TABLE IF NOT EXISTS `t2` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`hash` varchar(32) NOT NULL,
PRIMARY KEY (`id`)
) ;
INSERT INTO `t2` (`id`, `hash`) VALUES
(1, 'c4ca4238a0b923820dcc509a6f75849b'),
(2, 'c81e728d9d4c2f636f067f89cc14862c'),
(3, 'eccbc87e4b5ce2fe28308fd9f2a7baf3'),
(4, 'a87ff679a2f3e71d9181a67b7542122c'),
(5, 'e4da3b7fbbce2345d7772b0674a318d5'),
(6, '1679091c5a880faf6fb5e6087eb1b2dc'),
(7, '8f14e45fceea167a5a36dedd4bea2543'),
(8, 'c9f0f895fb98ab9159f51fd0297e236d'),
(9, '45c48cce2e2d7fbdea1afc51c7c6ad26'),
(10, 'd3d9446802a44259755d38e6d163e820');
select count(self.id),t2.*
from t2
left join t2 as self on t2.hash>self.hash
group by t2.id
order by t2.hash
ну порядок они имеют же!... я так это понимаю: на каждый индекс отведена отдельная таблица где по порядку отсортированы ключи к которым записана строка в таблице (или лучше сказать строка файла где таблица записана)Да, конечно!
create table t ( id int, key(id) );
insert into t values (1), (1), (1), (2), (2);