Mysql 提供重复结果的sql查询
我有两个表,我想从表中提取选定的列。 表1为sfpinventoryinfo,表2为opticalportinfo 两者都有共同的NEIDMysql 提供重复结果的sql查询,mysql,sql,join,Mysql,Sql,Join,我有两个表,我想从表中提取选定的列。 表1为sfpinventoryinfo,表2为opticalportinfo 两者都有共同的NEID SELECT sfpinventoryinfo.NEID, sfpinventoryinfo.SlotNumber, sfpinventoryinfo.PortNo, sfpinventoryinfo.PortType, sfpinventoryinfo.`Type`, sfpinventoryinfo.SN, sfp
SELECT
sfpinventoryinfo.NEID,
sfpinventoryinfo.SlotNumber,
sfpinventoryinfo.PortNo,
sfpinventoryinfo.PortType,
sfpinventoryinfo.`Type`,
sfpinventoryinfo.SN,
sfpinventoryinfo.GenDes,
sfpinventoryinfo.ApplicationCode,
opticalportinfo.ChannelFrequency
FROM
sfpinventoryinfo
JOIN opticalportinfo ON sfpinventoryinfo.NEID = opticalportinfo.NEID;
但我得到了奇怪的结果
如上面的结果所示,插槽4应该只有一个端口条目,而不是5个条目。您的
opticalportinfo
可能有六行,在NEID
中的值为13。因此,联接将生成结果集中的所有六行
在不了解更多应用程序的情况下,很难猜测选择这六行中的哪一行的“正确”方式。如果必须,您可以使用SELECT DISTINCT绕过该问题。但这是一种黑客行为。很明显,一张表或两张表中都有重复项。在示例数据中,整行看起来是重复的,因此可以使用
select distinct
,这样整行就不会重复:
SELECT DISTINCT i.NEID, i.SlotNumber, i.PortNo, i.PortType, i.`Type`, i.SN,
i.GenDes, i.ApplicationCode, oi.ChannelFrequency
FROM sfpinventoryinfo i JOIN
opticalportinfo op
ON i.NEID = oi.NEID;
或者,分组依据
:
SELECT i.NEID, i.SlotNumber, i.PortNo, i.PortType, i.`Type`, i.SN,
i.GenDes, i.ApplicationCode, MAX(oi.ChannelFrequency)
FROM sfpinventoryinfo i JOIN
opticalportinfo op
ON i.NEID = oi.NEID
GROUP BY i.NEID, i.SlotNumber, i.PortNo, i.PortType, i.`Type`, i.SN,
i.GenDes, i.ApplicationCode;
也就是说,您确实需要了解为什么会有重复项,并调整查询或修复数据。显示一些表格数据。请阅读此内容并编辑您的问题。如果您想帮助自己,请在查询中添加一组POrtNo,看看这是否对您有帮助,您可能需要在GROUP BY中添加更多列,还需要了解聚合函数。您的join子句中缺少某个字段。你能给我们看一下这个查询中的SELECT*吗?应该很容易发现。或者,如果无法以任何其他方式消除重复项,可以使用SELECT DISTINCT。