[英]How to combine two queries? MySQL
我怎樣才能結合我的兩個查詢?
1:
SELECT `dialog_id`
FROM `messages`
GROUP BY `dialog_id`
HAVING COUNT(*) >= 10
AND MIN(`timestamp`) + INTERVAL 1 HOUR < MAX(`timestamp`)
此查詢正在查找超過 10 條消息且持續時間超過一個小時的對話框。
2:
SELECT * FROM messages tbl WHERE
(SELECT COUNT(*) FROM messages tbl1 WHERE tbl1.dialog_id = tbl.dialog_id AND tbl1.id >= tbl.id AND
(user_from = :user_from OR user_to = :user_to)) <= 2 ORDER BY dialog_id DESC
第二個查詢為每個對話框選擇最后兩行。
所以,我想要的是 select 最后兩行,每個對話持續一個多小時,其中有超過 10 條消息。 我想在對話框預覽頁面上顯示它們。
對不起,我的英語不是我的母語。
您可以使用 window 函數進行所有這些計算:
SELECT m.*
FROM (SELECT m.*,
ROW_NUMBER() OVER (PARTITION BY dialog_id ORDER BY id DESC) as seqnum,
COUNT(*) OVER (PARTITION BY dialog_id) as cnt,
MIN(timestamp) OVER (PARTITION BY dialog_id) as min_timestamp,
MAX(timestamp) OVER (PARTITION BY dialog_id) as max_timestamp
FROM messages m
) m
WHERE seqnum <= 2 AND
cnt >= 10 AND
max_timestamp > min_timestamp + INTERVAL 1 HOUR;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.