Mysql 一组id,你知道我如何强制它总是返回最小的id吗?(注意,这将是我问题中查询的联合的第三部分)作为我的最后一个问题,您知道为什么抛出“无效使用组函数”吗?我如何修正语法? ( SELECT id FROM events -- all

Mysql 一组id,你知道我如何强制它总是返回最小的id吗?(注意,这将是我问题中查询的联合的第三部分)作为我的最后一个问题,您知道为什么抛出“无效使用组函数”吗?我如何修正语法? ( SELECT id FROM events -- all,mysql,sql,Mysql,Sql,一组id,你知道我如何强制它总是返回最小的id吗?(注意,这将是我问题中查询的联合的第三部分)作为我的最后一个问题,您知道为什么抛出“无效使用组函数”吗?我如何修正语法? ( SELECT id FROM events -- all unread messages WHERE author_id = ? AND seen = 0 ) UNION ( SELECT id FROM events -- 2 read messages WHE


一组id,你知道我如何强制它总是返回最小的id吗?(注意,这将是我问题中查询的联合的第三部分)作为我的最后一个问题,您知道为什么抛出“无效使用组函数”吗?我如何修正语法?
( SELECT id FROM events             -- all unread messages
  WHERE author_id = ? AND seen = 0  
) UNION
( SELECT id FROM events             -- 2 read messages
  WHERE author_id = ? AND seen <> 0
  ORDER BY date_time desc
  LIMIT 2                              
) UNION
( SELECT id FROM events             -- at least 15 rows by default
  WHERE author_id = ?
  ORDER BY seen, date_time desc
  LIMIT 15   
) 
SELECT SUM(score) score, post_id, title, content, date_time
FROM events
GROUP BY post_id, title, content, date_time
ORDER BY seen, MAX(date_time) desc
WHERE id IN ($ids)
id | score | post_id | title | content | date_time | seen ---+-------+---------+-------+---------+---------------------+----- 1 | 10 | 11 | hello | it's me | 2018-01-11 12:34:56 | 0 2 | 20 | 22 | hello | it's me | 2018-01-12 12:34:56 | 0 3 | 30 | 33 | hello | it's me | 2018-01-13 12:34:56 | 0 4 | 40 | 44 | hello | it's me | 2018-01-14 12:34:56 | 0 5 | 50 | 11 | hello | it's me | 2018-01-11 12:34:56 | 1 6 | 60 | 22 | hello | it's me | 2018-01-12 12:34:56 | 1 7 | 70 | 44 | hello | it's me | 2018-01-14 12:34:56 | 1 8 | 80 | 55 | hello | it's me | 2018-01-05 12:34:56 | 1 9 | 90 | 55 | hello | it's me | 2018-01-05 12:34:56 | 1
SUM(CASE WHEN seen = 0 THEN 1 ELSE 0 END)
COUNT(CASE WHEN seen = 0 THEN 1 END)
SUM(seen = 0)
HAVING MAX(seen = 0) = 0 -- no unread messages

HAVING MIN(seen = 0) = 1 -- no read messages
SELECT SUM(score) AS score, post_id, title, content, date_time
FROM events
GROUP BY post_id, title, content, date_time
HAVING SUM(seen = 0) > 0;
(
  SELECT SUM(score) AS score, post_id, title, content, date_time, SUM(seen = 0) as unread
  FROM events
  GROUP BY post_id, title, content, date_time
  HAVING SUM(seen = 0) > 0
)
UNION
(
  SELECT SUM(score) AS score, post_id, title, content, date_time, SUM(seen = 0) as unread
  FROM events
  GROUP BY post_id, title, content, date_time
  ORDER BY SUM(seen = 0) DESC, date_time DESC
  LIMIT 15
)
ORDER BY (unread = 0), date_time DESC;
SELECT id
FROM events
WHERE (post_id, title, content, date_time) IN
(
  SELECT post_id, title, content, date_time
  FROM (<above query>) q
);