mysql實現name姓名多個相同的數據只取一條


比如一個表里面有多個張三、多個李四,我們調用數據時碰到重復的多個張三時只調一條數據,多個李四也只調一條數據。

查詢相同姓名(name字段)的最小id行

1、原生sql方式

SELECT a.* from visit as a where not exists (select 1 from visit as b where b.name = a.name and (b.id < a.id)) 

2、Thinkphp6方式

->whereRaw('not exists (select 1 from visit as b where b.name = a.name and (b.id < a.id))')

3、我的使用示例:

SELECT
    a.*,
    (
    SELECT
        COUNT(*) AS think_count
    FROM
        `visit`
    WHERE
        ((url = a.url)) AND `visit`.`delete_time` IS NULL
) AS pv_count
FROM
    `visit` `a`
WHERE
    (
        `a`.`create_time` BETWEEN 1609430400 AND 1612108799 AND(
            NOT EXISTS(
            SELECT
                1
            FROM
                visit AS b
            WHERE
                b.url = a.url AND(b.id < a.id)
        )
        )
    ) AND `a`.`delete_time` IS NULL
ORDER BY
    `pv_count` ASC,
    `a`.`id`
DESC
    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM