實(shí)現(xiàn)邏輯:先查出每組最大的,再和結(jié)果關(guān)聯(lián)
可以考慮使用子查詢或者連接查詢實(shí)現(xiàn)。以下是兩種語法:
子查詢:
SELECT *
FROM 表名
WHERE (組內(nèi)條件, 時(shí)間) IN (
SELECT 組內(nèi)條件, MAX(時(shí)間)
FROM 表名
GROUP BY 組內(nèi)條件
);
其中,組內(nèi)條件是按照哪個(gè)字段進(jìn)行分組的條件,可以是一個(gè)或多個(gè)字段。時(shí)間是需求中要篩選的時(shí)間字段,假設(shè)為time字段。這個(gè)查詢會(huì)返回滿足組內(nèi)條件下時(shí)間最大的記錄。文章來源:http://www.zghlxwxcb.cn/news/detail-598371.html
連接查詢:
SELECT t1.*
FROM 表名 t1
INNER JOIN (
SELECT 組內(nèi)條件, MAX(時(shí)間) as max_time
FROM 表名
GROUP BY 組內(nèi)條件
) t2
ON t1.組內(nèi)條件 = t2.組內(nèi)條件 AND t1.時(shí)間 = t2.max_time;
其中,組內(nèi)條件和時(shí)間的含義同上。這個(gè)查詢會(huì)先用子查詢找到每組對(duì)應(yīng)的最大時(shí)間,再用連接查詢將原表中的記錄與這些最大時(shí)間進(jìn)行匹配并返回相應(yīng)的記錄。文章來源地址http://www.zghlxwxcb.cn/news/detail-598371.html
其他
SELECT * FROM
(
SELECT CONCAT(b.check_batch_code,r.create_time)c,b.check_batch_code,b.`status`,r.* FROM check_base b LEFT JOIN check_record r on b.check_base_id = r.check_base_id
)t
RIGHT JOIN
(
SELECT CONCAT(b.check_batch_code,MAX(r.create_time))cm FROM check_base b LEFT JOIN check_record r on b.check_base_id = r.check_base_id GROUP BY b.check_batch_code,r.check_type
)d
ON t.c = d.cm
WHERE `status` = 2 and check_type = 2
到了這里,關(guān)于用mysql實(shí)現(xiàn)按條件分組并且每組去時(shí)間最大的一條的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!