MySQL Выберите Отличительный Вопрос - PullRequest
0 голосов
/ 08 июня 2011

Я хочу вернуть все столбцы из таблицы, но только для «уникальных» или «отдельных» пользователей.

Я хочу получить всех отдельных пользователей из таблицы, но вернуть все столбцы.

Я буду сортировать таблицу по отметке времени, чтобы получить «первую» запись каждого отдельного пользователя.

Есть идеи?

Ответы [ 5 ]

2 голосов
/ 08 июня 2011

Вы должны опубликовать определение таблицы, но более или менее это должно быть возможно, используя GROUP BY.

SELECT col1, col2, col3, MIN(timestamp)
FROM   users
GROUP BY
       col1, col2, col3

Если любой из ваших других столбцов также содержит переменные данные (как они на самом деле должны быть в нормализованной таблице), вам нужно выбрать, какую агрегированную функцию вы хотите использовать для них.

SELECT col1, col2, col3, MAX(var1), AVG(var2), ..., MIN(timestamp)
FROM   users
GROUP BY
       col1, col2, col3
1 голос
/ 08 июня 2011
select * from table group by userid order by time;

Не забудьте переименовать идентификатор пользователя и время совпадения с именами столбцов

0 голосов
/ 08 июня 2011
select * 
from table a,
(select min(timestampfield) as ts, userid as userid
from table
group by userid) b
where a.userid = b.userid and a.ts = b.ts
0 голосов
/ 08 июня 2011

Вам не нужно группировать.Вам нужно выбрать каждую запись в вашей таблице, у которой нет другой записи для того же пользователя с меньшей (или большей) временной меткой

select * from my_table t1
where not exists (select 1 from my_table t2
                   where t1.user = t2.user
                     and t1.time < t2.time)

Убедитесь, что индексы установлены на user и * 1005.* столбцы

0 голосов
/ 08 июня 2011

Вы пробовали использовать GROUP BY, т.е.

SELECT * FROM users GROUP BY id ORDER BY ...

Обычно это должно работать, но вы не упомянули какую-либо структуру ..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...