2016-09-07 3 views
-1

Я пытаюсь отобразить статус последних пользователей, но по какой-то причине вывод продолжает показывать их все.показать последний статус пользователя id

Например, это мой стол

employeeid | employee | status 
123  | Don Smith | 0 
123  | Don Smith | 1 

Это то, что я пытаюсь получить; последний Дон Смит Статус

employeeid | employee | status 
123  | Don Smith | 1 


SELECT spe1.employeeid, spe1.employee, spe1.status 
FROM sp_employees spe1 
WHERE spe1.employeeid = (SELECT spe2.employeeid 
        FROM sp_employees spe2 
        WHERE spe1.employeeid = spe2.employeeid   
        ORDER BY spe2.employeeid DESC 
        LIMIT 1) 
+2

MySQL не сможет отличить, какая строка является «последней» в наборе. Без ORDER BY, агрегата MIN() или MAX(), в наборе результатов нет понятия «порядок». MySQL может возвращать любую строку, которая удовлетворяет предикату. Строка должна содержать информацию, которую MySQL может использовать, чтобы определить, является ли она «последней» строкой или нет. В качестве примера добавим столбец DATETIME, который затем можно будет использовать для упорядочивания строк. – spencer7593

+0

Это не «слишком широкий». Это неразрешимо - но пока у них не будет кнопки для этого ... – Strawberry

ответ

1

employeeid равно в обоих записях, ваш запрос выбирает все пользователи с этим EmployeeID, который в этом случае = все пользователи.

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

Обратите внимание, что ваш LIMIT 1 применяется только к внутреннему запросу, который возвращает запрошенный employeeid.

Кроме того, если вы хотите изменить статус пользователя, используйте запрос UPDATE, который обновит значение статуса вместо добавления новой записи в таблицу.

+0

Не могли бы вы помочь и предоставить мне пример с использованием отдельных, используя мою первую таблицу. Поскольку вы правы, я хочу, чтобы не показывать одного и того же пользователя, поскольку я просто пытаюсь получить последний статус сотрудника. Например, у одного пользователя может быть 10 записей с одинаковым статусом 0, поэтому я хочу показать, что когда статус пользователя изменяется на 1, я хочу отобразить 1, а затем, когда состояние пользователя изменится на 0, 0 будет отображаться. Имеют смысл? – xiaohouzi

Смежные вопросы