Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.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 GroupBy子句删除所有空列值_Mysql_Join_Select_Group By_Inner Join - Fatal编程技术网

Mysql GroupBy子句删除所有空列值

Mysql GroupBy子句删除所有空列值,mysql,join,select,group-by,inner-join,Mysql,Join,Select,Group By,Inner Join,我编写了以下查询,其中我在server列上使用了groupby子句 select s.server, MAX(s.ipAddress) as ipAddress, MAX(r.stacks->>"$[0].name") as stackName, MAX(a.aMessage) as aMessage from environments e inner join servers s on e.o

我编写了以下查询,其中我在
server
列上使用了groupby子句

select s.server, MAX(s.ipAddress) as ipAddress, 
        MAX(r.stacks->>"$[0].name") as stackName,
        MAX(a.aMessage) as aMessage
        from environments e
        inner join servers s
            on e.objectId  = s.environmentId
        inner join resources r
            on e.objectId  = r.environmentId     
        inner join audits a
            on a.id  = (select max(a.id) from audits a where a.logObjId = s.cAudit)  
        WHERE dateSubmitted BETWEEN NOW() - INTERVAL 90 DAY AND NOW()
        Group by s.server
        ORDER BY dateSubmitted; 
但是,
server
列可能具有有效的
ipAddress
stackName
NULL

如何修改查询,以使所有
NULL
server
列值不会遗漏

预期样本数据:

server  ipAddress   stackName   aMessage
NULL    NULL    Stack A Searching for IP pool
NULL    NULL    Stack B Message XYZ
NULL    NULL    Stack A Message ABC

似乎用于
JOIN
internal JOIN
表将
NULL
值从结果中删除。因此,只需修改查询。试试这个,看看你是否能看到
Server
表中的所有数据,这样
NULL
数据也会出现在
Server
列中

select s.server, MAX(s.ipAddress) as ipAddress, 
            MAX(r.stacks->>"$[0].name") as stackName,
            MAX(a.aMessage) as aMessage
            from servers s
            left join environments e
                on e.objectId  = s.environmentId
            left join resources r
                on e.objectId  = r.environmentId     
            left join audits a
                on a.id  = (select max(a.id) from audits a where a.logObjId = s.cAudit)  
            WHERE dateSubmitted BETWEEN NOW() - INTERVAL 90 DAY AND NOW()
            Group by s.server
            ORDER BY dateSubmitted; 

我怀疑是您的内部联接删除了空值,而不是您的分组方式。考虑将这些代码转换为<代码>左外部连接< /代码>。请在代码问题中给出剪切和粘贴和可运行代码,包括最小代表性示例输入作为代码;期望和实际输出(包括逐字记录错误消息);标签和版本;清晰的说明和解释。尽可能少地给出代码,即显示为OK的代码,并通过显示为not OK的代码进行扩展。(调试基础。)用于包含DBMS和DDL(包括约束和索引)的SQL,并将其作为格式化为表的代码输入。暂停对总体目标的工作,将代码切掉到第一个表达式,不要给出你期望的内容,说出你期望的内容和原因。在这种情况下,同意@philipxy。样本数据在这里会有很长的路要走,因为涉及到这么多的表,所以样本数据可能是绝对必要的,以使您的问题具有可复制性。可能您的服务器空值与内部联接等式中提到的列中的空值出现在同一行中,但如果这些等式是真的&联接中的一行,列必须是非空的。在哪里?共有4个表,没有它们的示例数据。您需要做的是“使其静音”(一次加入一个),并在运行时对其进行测试…这仍然不起作用,因为我只看到一行
server
as
NULL