一尘不染

从SQL查询中删除重复项(不仅仅是``不同'')

sql

这可能很简单,这是我的查询:

SELECT DISTINCT U.NAME, P.PIC_ID
FROM USERS U, PICTURES P, POSTINGS P1
WHERE U.EMAIL_ID = P1.EMAIL_ID AND P1.PIC_ID = P.PIC_ID AND P.CAPTION LIKE '%car%';

但这只会删除具有相同u.name和p.pic_id的行中的重复项。我想要这样,如果名称有任何重复,则只剩下其他行。这是一个奇怪的查询,但是总的来说,我如何将不重复项应用于SELECT子句的单个列?


阅读 190

收藏
2021-03-10

共1个答案

一尘不染

任意选择保留最小的PIC_ID。另外,请避免使用隐式连接语法。

SELECT U.NAME, MIN(P.PIC_ID)
    FROM USERS U
        INNER JOIN POSTINGS P1
            ON U.EMAIL_ID = P1.EMAIL_ID
        INNER JOIN PICTURES P
            ON P1.PIC_ID = P.PIC_ID
    WHERE P.CAPTION LIKE '%car%'
    GROUP BY U.NAME;
2021-03-10