2014-01-09 8 views
0

У меня есть таблица, которая хранит посещения пользователей, например так:MySQL выберите первый экземпляр из группы строк

visits (id, pageURL, date, ip) 

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

Я пытаюсь найти запрос, который выберет только первую строку каждого пользователя, приземлившегося при первом приходе на сайт, если страницаURL - user.html.

Это то, что я не могу понять, я могу легко сделать это с PHP и несколькими MySQL-запросами, но это может быть быстрее, если есть только один запрос.

ответ

0

Только с верхней части моей головы, я имею в виду что-то вроде

SELECT * FROM visits WHERE pageURL='user.html' GROUP BY ip SORT BY ip, date 
-1
select * from visits group by ip having pageURL='user.html' order by id,date asc limit 1 
0
SELECT pageURL,date,ip 
FROM visits v1 
WHERE id = (SELECT MIN(id) FROM visits v2 WHERE v2.ip = v1.ip) 
    AND pageURL='user.html' -- dont know if necessary 

http://sqlfiddle.com/#!2/9b669/5

+0

автор вопроса не говорит вам, что строка ID является Автоинкрементный номер , Как это будет работать, если идентификаторы являются идентификаторами GUID? Выбор первого посещения страницы по дате здесь имеет больше смысла. –

+0

Если у меня не хватает достаточной информации, у меня есть вопрос. Использование уникального идентификатора является нормальным - для моего решения это хороший совет. – niyou

+0

Если вы «_have to guess_», тогда вы не должны угадывать что-то, что * может быть ошибочным. Дата (если вход неверно) * не будет * ошибочно, ID * может * быть ошибочным –

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