Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 提供重复结果的sql查询_Mysql_Sql_Join - Fatal编程技术网

Mysql 提供重复结果的sql查询

Mysql 提供重复结果的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

我有两个表,我想从表中提取选定的列。 表1为sfpinventoryinfo,表2为opticalportinfo 两者都有共同的NEID

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。