Я борюсь с призывом Mysql и надеялся одолжить ваш опыт.Mysql Уникальные записи, где есть несколько записей
Я считаю, что то, что я хочу, возможно только с помощью двух выборок, и я еще не сделал ни одного из них, и я изо всех сил пытаюсь обмотать голову вокруг этого.
У меня есть таблица, например, так:
+------------------+----------------------+-------------------------------+
| username | acctstarttime | acctstoptime |
+------------------+----------------------+-------------------------------+
| bill | 22.04.2014 | 23.04.2014 |
+------------------+----------------------+-------------------------------+
| steve | 16.09.2014 | |
+------------------+----------------------+-------------------------------+
| fred | 12.08.2014 | |
+------------------+----------------------+-------------------------------+
| bill | 24.04.2014 | |
+------------------+----------------------+-------------------------------+
Я хочу, чтобы выбрать только уникальные записи из столбца, т.е. имя пользователя, я только хочу одну запись для счета и мне нужна одна с самых последних датой_начала условии, что они
были
не были за последние три месяца (end_date для меня не важен), иначе я не хочу никаких данных. В итоге мне просто нужен кто-нибудь, где самая последняя дата начала - более 3 месяцев.
Команда Я использую в настоящее время является:
SELECT DISTINCT(username), ra.acctstarttime AS 'Last IP', ra.acctstoptime
FROM radacct AS ra
WHERE ra.acctstarttime < DATE_SUB(now(), interval 3 month)
GROUP BY ra.username
ORDER BY ra.acctstarttime DESC
Однако, это просто дает мне подробности о date_start для этого конкретного клиента, где они имели дату начала более 3 месяцев назад. Я устал от нескольких других комбинаций этого и попробовал команду с двойным выбором, но сейчас я нажимаю кирпичные стены. Любая помощь или толчок в правильном направлении были бы высоко оценены.
Update
Я создал следующее: http://sqlfiddle.com/#!2/f47b2/1
Эффективно я должен видеть только 1 строку, если запрос, как это должно быть. Это будет строка для счета. Поскольку он единственный, у которого нет даты начала в течение последних трех месяцев. В результате я бы ожидал увидеть, заключается в следующем:
24 bill April, 11 2014 12:11:40+0000 (null)
Поскольку это последняя дата начала счета, но эта дата начала не в течение последних трех месяцев. Надеюсь, это поможет прояснить ситуацию. Большое спасибо за вашу помощь.
http://sqlfiddle.com/#!2/f47b2/14
Это еще один пример. Если acctstartdate для счета будет отображаться как апрельская запись, тогда я мог бы добавить свое предложение where за последние три месяца, и это даст мне мой желаемый результат.
Вы должны изменить свое сравнение ie'WHERE ra.acctstarttime> DATE_SUB (сейчас(), интервал 3 месяца) ' – sqlab
@sqlab См. обновление в вопросе. Большое спасибо –