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
);