Запрос базы данных SQL без сценариев на стороне сервера - PullRequest
0 голосов
/ 27 апреля 2011

Эй. Я хочу написать SQL-запрос для таблицы:

user_1(question_id int, option char(1));

Здесь, в этой таблице, я располагаю question_id в случайном порядке, и клиент отправит предыдущий question_id на сервер. Затем мне нужно следующее question_id в таблице после question_id, отправленного клиентом.

Я могу сделать это с помощью сценариев на стороне сервера, но возможно ли это без этого? Я имею в виду непосредственно следующий question_id с sql.

Пример данных:

4, 'A'
2, 'B'
7, 'C'

Ответы [ 3 ]

1 голос
/ 27 апреля 2011

У вас нет способа определить, какой вопрос должен идти дальше. Если вы запрашиваете таблицу без указания порядка, может показаться, что у вас есть набор строк, упорядоченный по времени вставки. Хотя это верно для небольших таблиц, вы не должны полагаться на это. Любая значительная сумма вставки / удаления записей или анализа таблицы может изменить этот порядок, и в итоге вы ошибетесь. Если у вас нет другого порядка хранения столбцов, в который вы вставляли данные, нет абсолютно никаких гарантий, что вы получите их сразу после выбора без указания заказа.

0 голосов
/ 27 апреля 2011
select id from question 
where id not in (already asked)
order by rand()
limit 0,1

edit : Видя обновленный вопрос, ответ - никак. Вам нужно какое-то другое поле, которое будет устанавливать порядок вопросов, потому что теперь невозможно определить, в каком порядке они приходят.

Вы должны думать о таблице базы данных как о наборе записей UNORDERED.

0 голосов
/ 27 апреля 2011

Если я вас правильно понимаю ...

SELECT MIN(question_id) FROM user_1 WHERE question_id > (value client sent)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...