Mysql
 sql >> база данни >  >> RDS >> Mysql

Как мога да използвам псевдоними в клаузата GROUP BY?

Не сте сигурни какво се опитвате да направите. Но можете да обвиете заявката си в подзаявка без range_day в клаузата GROUP BY. След това използвайте вашата клауза GROUP BY във външната заявка, както е.

SELECT  SUM(score) score,
    type,
    context, -- WARNING! Not listed in group by clause
    post_id,
    table_code,
    comment_id,
    MIN(seen) seen,
    MAX(d_t) d_t,
    range_day
FROM (
    SELECT  SUM(score) score,
        MAX(id) as id,
        type,
        context, -- WARNING! Not listed in group by clause
        post_id,
        e.table_code,
        comment_id,
        MIN(seen) seen,
        MAX(date_time) d_t,
        (CASE   WHEN FROM_UNIXTIME(MAX(date_time)) >= CURDATE() THEN 'today'
            WHEN FROM_UNIXTIME(MAX(date_time)) >= DATE_SUB(CURDATE(), INTERVAL 1 DAY) THEN 'yesterday'
            WHEN FROM_UNIXTIME(MAX(date_time)) >= DATE_SUB(CURDATE(), INTERVAL 7 DAY) THEN 'in last week'
            ELSE 'in last month'
        END) as range_day
    FROM `events` e
    WHERE e.id IN ($ids)
    GROUP BY type, post_id, e.table_code, comment_id
) sub
GROUP BY type, post_id, table_code, comment_id, range_day
ORDER BY seen, MAX(d_t) desc, MAX(id) desc

Въпреки това - избирате context без агрегиране, което не е посочено в клаузата GROUP BY. Така ще получите някаква "случайна" стойност от групата. В строг режим заявката ще бъде неуспешна.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Възстановяване на MySQl база данни от .frm, ibdata и ib_logfile

  2. Как да свържа R с MySQL или как да инсталирам RMySQL пакет?

  3. В mysql или postgres има ли ограничение за размера на оператор IN (1,2,n)?

  4. Entity-Framework -> MySql дава „Времето за изчакване на оценката на функцията е изтекло“.

  5. Как да разширите разделеното със запетая поле на няколко реда в MySQL