SQL查询中没有重复项

Mar*_*tin 5 mysql sql distinct duplicates

我正在使用内部联接在MySQL中进行选择:

SELECT DISTINCT tblcaritem.caritemid, tblcar.icarid 
FROM tblcaritem 
INNER JOIN tblprivatecar ON tblcaritem.partid = tblprivatecar.partid 
INNER JOIN tblcar ON tblcaritem.carid = tblcar.carid 
WHERE tblcaritem.userid=72;
Run Code Online (Sandbox Code Playgroud)

有时我会在结果中得到重复的tblcaritem.caritemid.我想确保永远不会得到tblcaritem.caritemid的副本,但我怎么能这样做?我试图使用DISTINCT,但它只是检查整行是否重复,我想只检查tblcaritem.caritemid,有没有办法?

对不起,如果我没有很好地解释它,我不是最好的SQL查询.

cha*_*aos 11

GROUP BY tblcaritem.caritemid


Jul*_*iet 5

这里的问题正如您所描述的那样:您正在检查整行的唯一性,您的数据集最终看起来像这样:

CarItemId    CarId
---------    -----
1            1
1            2
1            3
2            1
2            2
3            3
Run Code Online (Sandbox Code Playgroud)

您想要唯一且没有重复的 CarItemId,这意味着您也想要唯一的 CarId ---- 好吧,您有 3 个 CarId,SQL Server 应该选择哪一个?

除了聚合这些额外的 CarId 之外,您没有太多选择:

SELECT tblcaritem.caritemid, max(tblcar.icarid)
FROM tblcaritem
INNER JOIN tblprivatecar ON tblcaritem.partid = tblprivatecar.partid
INNER JOIN tblcar ON tblcaritem.carid = tblcar.carid
WHERE tblcaritem.userid=72
GROUP BY tblcaritem.caritemid
Run Code Online (Sandbox Code Playgroud)