SQL выберите предыдущую запись, где - PullRequest
1 голос
/ 15 июля 2011

Итак, я пытаюсь выполнить запрос через таблицу, назовите ее студентами, если столбец «статус» в «Студенте» «активен», затем выберите столбцы «firstName» и «lastName» из предыдущей записи.Каждая запись имеет первичный ключ.То есть, если столбец «status» записи = active, то я хочу выбрать предыдущую запись.Таблица уже заполнена данными типа

id  firstname   lastname    status          email
9   Joe         Peters      inactive        fp@gmail.com
10  kim         Rol         active          rt@yh.com
11  Lance       Ree         inactive        lll&hh.com
12  diana       Jones       active          sams@yahoo.com

. Для этих данных запрос должен возвращать Джо Питерса и Лэнси Ри. Как я могу это сделать?спасибо

Ответы [ 2 ]

1 голос
/ 15 июля 2011

Если вы просто хотите выбрать имя из записей, где студент active, запрос будет простым

SELECT id, firstname, lastname
FROM students
WHERE status = "active"

Я предполагаю, что вы подразумеваете под предыдущая строка строка, которую вы только что определили, была активной ученицей .Запрос проверит вашу таблицу на наличие активных студентов и извлечет их имена.Поскольку имена редко бывают уникальными, я включил столбец идентификаторов.Я также рекомендую установить в столбце состояния целое число 0 или 1.

Если вы действительно хотите выбрать предыдущую строку, вы можете использовать

SELECT sj.id, sj.firstname, sj.lastname
FROM students AS s
LEFT JOIN students AS sj ON (sj.id = s.id - 1)
WHERE s.status = "active"

Смысл в определении отношениястроки у вас есть и строки, которые вы хотите выбрать.В этом случае вы хотите выбрать строку, у которой ID на 1 меньше текущей строки.Поскольку это ограничение очень ограниченное, выбирать строки таким способом не очень хорошая идея.Возможно, вы захотите изменить свою базу данных.

0 голосов
/ 15 июля 2011

С предыдущей записью вы, вероятно, имеете в виду вставленную ранее. Вы можете обратиться к этой строке, используя last_insert_id () - функцию mysql, которая будет возвращать последнее вставленное автоматически увеличенное значение.

select * from T where id = last_insert_id();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...