У меня есть этот запрос, который работает очень хорошоПолучите максимум и минимум значений со всеми значениями и множественным, где положение
SELECT cm.id ,cm.edited,cm.date_edited,cm.voteup,cm.votedown
FROM chat_messages cm
WHERE TIMESTAMPDIFF(SECOND,cm.date_edited,'$now') < 10 GROUP BY cm.id
Который дает мне записи, которые отредактированные менее чем за 10 секунд.
Но вместе с тем им пытаются получить также max(voteup)
и min(votedown)
Но не влияет на первые записи первого запроса. Как я могу объединить, чтобы получить все записи, которые мне нужны?
Пример:
если им получать 3 вновь обновляет записи. Я хочу, чтобы они получили эти 3 плюс максимум голосов и проголосовали.
Пример:
id edited date_edited voteup votedown
37 0 2016-03-05 22:13:03 5 0
38 0 2016-04-02 11:15:00 3 7
39 0 2016-03-05 22:10:06 10 6
40 0 2016-03-20 21:40:06 5 0
41 1 2016-04-20 22:28:59 5 0
42 1 2016-03-20 21:59:15 0 20
43 1 2016-04-21 22:20:25 8 0 <---- this new updated
Мой пожелал результат
id edited date_edited voteup votedown maxup maxdown
39 0 2016-03-05 22:10:06 10 6 10 NULL
42 1 2016-03-20 21:59:15 0 20 NUll 20
43 1 2016-04-21 22:20:25 8 0 NULL NULL
$now
Мой время 2016-04-21 22:20:20
объяснение:
-id 39 is having maxup vote i want get it
-id 42 is having maxdown i want get it
-id 43 is newly updated in that period of 10 seconds.
так я вообще я хочу получить новые обновленные записи pls max вверх и вниз.
если многие максимальные значения voteup одинаковы, то просто выберите тот, который уже мин votedown
Любое решение, что PLS?
Здесь my sqlfiddle example
Edit: ой извините я имел в виду идентификатор. Теперь хочу, чтобы мой вопрос ясен как
Ваш скрипт sql не имеет поля 'id', с которым вы используете в предложении GROUP BY в приведенном выше рабочем документе. –
@JeffPuckettII edted, извините, что я имел в виду id :) –
у вас все еще есть 'cm.userid' в вышеприведенном заявлении;) –