我有两个mysql表
表1是“Qualitet inventar”,有3000行,其中“sachnummer”是自动递增的
mysql - 在MySQL中用“GROUP BY”和最新日期连接多个表-LMLPHP
表2是“qualitaet”,有几行。。这里的“id”设置为自动递增
重要的是,“ShannimMe”可以存在很多次。(见图中红色标记)
mysql - 在MySQL中用“GROUP BY”和最新日期连接多个表-LMLPHP
我想做的是从“qualitaet”到“qualitaet inventar”的左连接
我想通过在“qualitaet”上显示“created”的最新日期来对所有“sachnummer”进行分组
当“qualitaet”中没有“sachnummer”时,对“qualitaet inventar”执行空联接
所以我有这个密码

SELECT
    i.`sachnummer` AS id,
    MAX(q.`created`) AS letztemessung,
    i.`sachnummer-name` AS sachnummer
FROM
        `qualitaet-inventar` i
LEFT JOIN
        `qualitaet` q on i.`sachnummer` = q.`sachnummer`
GROUP BY
        sachnummer
ORDER BY
    sachnummer ASC

问题是需要很长时间才能得到这个结果
mysql - 在MySQL中用“GROUP BY”和最新日期连接多个表-LMLPHP
有了这段代码,它工作得更快
SELECT
    q.`sachnummer` AS id,
    MAX(q.`created`) AS letztemessung,
    i.`sachnummer-name` AS sachnummer
FROM
    qualitaet q
LEFT JOIN
    `qualitaet-inventar` i on q.`sachnummer` = i.`sachnummer`
GROUP BY
    sachnummer
ORDER BY
    sachnummer ASC

但我没有这个代码的空仓清单和空日期
mysql - 在MySQL中用“GROUP BY”和最新日期连接多个表-LMLPHP
对于高表行,是否可以更快地获取此表?:天
mysql - 在MySQL中用“GROUP BY”和最新日期连接多个表-LMLPHP
编辑:
这是我的索引
mysql - 在MySQL中用“GROUP BY”和最新日期连接多个表-LMLPHP

最佳答案

以下不应该比你现有的查询更快,但是从你的描述来看,可以这样做:

SELECT i.`sachnummer` AS id,
       MAX(q.`created`) AS letztemessung,
       i.`sachnummer-name` AS sachnummer
FROM `qualitaet-inventar` i
JOIN `qualitaet` q on i.`sachnummer` = q.`sachnummer`
GROUP BY sachnummer
UNION ALL
SELECT i.`sachnummer` AS id,
       q.`created` AS letztemessung,
       i.`sachnummer-name` AS sachnummer
FROM `qualitaet-inventar` i
LEFT JOIN `qualitaet` q on i.`sachnummer` = q.`sachnummer`
WHERE q.`sachnummer` IS NULL
ORDER BY sachnummer ASC

另一种可能性:
select id, max(letztemessung) as letztemessung, max(sachnummer) as sachnummer
from
(SELECT `sachnummer` AS id,
        `created` AS letztemessung,
        '' AS sachnummer
 FROM `qualitaet` q
 UNION ALL
 SELECT `sachnummer` AS id,
        cast(null as datetime) AS letztemessung,
        `sachnummer-name` AS sachnummer
 FROM `qualitaet-inventar` i
) sq
group by id
ORDER BY sachnummer ASC

09-25 18:03