Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.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子查询_Mysql_Sql - Fatal编程技术网

使用共享子查询优化MySQL子查询

使用共享子查询优化MySQL子查询,mysql,sql,Mysql,Sql,根据这些表,我编写了这个子查询,并根据需求给出了结果 需要专家指导来改进此查询,或者我们是否也可以对这些表使用join 查询: select ps,st from pac where con in (select config from config where logi in ( select id from logicalnode where physi in (select id from ysicalnode where mas =11))); 您可以在下面尝试-使用JOIN 试

根据这些表,我编写了这个子查询,并根据需求给出了结果

需要专家指导来改进此查询,或者我们是否也可以对这些表使用join

查询:

select ps,st from pac where con in (select 
config from config where logi in 
( select id from logicalnode where physi 
in (select id from ysicalnode where mas =11)));
您可以在下面尝试-使用JOIN

试试这个

    select pa,sta 
    from 
   pack p
    INNER JOIN
  confi c
    ON
    p.confi = c.idco
    INNER JOIN
   logice l
    ON
    c.logic = l.id
    INNER JOIN
  physiode pn
    ON
    l.physicalnodeid  = pn.id
    WHERE macaddress =123
您可以尝试使用exists:

使用左连接


请提供示例数据和所需结果。请在代码中添加一些解释。
    select pa,sta 
    from 
   pack p
    INNER JOIN
  confi c
    ON
    p.confi = c.idco
    INNER JOIN
   logice l
    ON
    c.logic = l.id
    INNER JOIN
  physiode pn
    ON
    l.physicalnodeid  = pn.id
    WHERE macaddress =123
select payloadstr,starttime from packetdb.packet p
where exists(select 1 from packetdb.configuration c
             where p.configid = id
             and exists(select 1 from packetdb.logicalnode l
                          where c.logicalnodeid = id
                          and exists(select 1 from packetdb.physicalnode
                                     where macaddress = 117769729
                                     and l.physicalnodeid = id)
select payloadstr,starttime 
from packet 
left join Configuration on Configuration.IDconfig = packet.configID
left join logicalnode on logicalnode.ID = Configuration.logicalnodeid
left join physicalnode on physicalnode.ID = logicalnode.physicalnodeid
 where macaddress =117769729
SELECT
    payloadstr
    ,starttime
FROM packetdb.packet
INNER JOIN packetdb.configuration
    ON packetdb.packet.configid = packetdb.configuration.idconfig
INNER JOIN packetdb.logicalnode
    ON packetdb.configuration.idconfig = packetdb.logicalnode.id
INNER JOIN packetdb.physicalnode
    ON packetdb.logicalnode.physicalnodeid = packetdb.physicalnode.id and packetdb.physicalnode.macaddress=117769729