Как получить данные из SQL после сортировки и убедиться, что они не повторяются - PullRequest
0 голосов
/ 30 апреля 2020

Итак, у меня есть база данных, а в таблице есть заголовки, такие как «LAT, LNG, NAME, EMAIL, DATE, TIME»

Это для отображения маркеров на карте путем подключения страницы карты php к БД для извлечения данных.

Теперь мой вопрос:

Например: у меня есть наборы данных с идентификатором электронной почты: abc@gmail.com повторяется 10 раз. Каждый с разными LAT и LONG. У меня есть наборы данных с идентификатором электронной почты: xyz@gmail.com повторяется 10 раз. Каждый с разными LAT и LONG. У меня есть наборы данных с идентификатором электронной почты: efg@gmail.com повторяется 10 раз. Каждый с разными LAT и LONG.

Как получить только самые последние наборы данных? Вместо 30 маркеров мне нужны только 3 последних маркера.

Я могу отсортировать его по дате и времени вставки, но как настроить его на получение только одного из каждого.

MY SQL query: $sql = "SELECT DISTINCT email, latitude, longitude, name from test ORDER BY date DESC, time DESC";

Я пробовал DISTINCT, а также пробовал DES C LIMIT 1, но оба не получили желаемых результатов. Также нет сообщений об ошибках. Чего мне не хватает?

Пожалуйста, помогите мне разобраться в этом.

С уважением, Абхисар

1 Ответ

1 голос
/ 30 апреля 2020

Вы можете фильтровать с помощью подзапроса:

select t.*
from test t
where concat(t.date, ' ', t.time) = (
    select max(concat(t1.date, ' ', t1.time))
    from test t1
    where t1.email = t.email
)

Обратите внимание, что вам не следует хранить компоненты даты и времени в двух разных столбцах. Это усложняет ситуацию, когда вам необходимо сгенерировать допустимое значение datetime - и от этого пострадает эффективность.

...