0

我正在努力修改这个查询(thx sgeddes),以便不仅从 db_events.events 字段中获得结果,而是将它与一些 db_system.devices 字段连接起来

SELECT e.* 
FROM db_events.events e 
   JOIN (
      SELECT Max(id) MaxId, device_id
      FROM db_events.events
      GROUP BY device_id ) e2 on e.Id = e2.MaxId AND e.device_id = e2.device_id
WHERE e.device_id IN (
            SELECT device_id 
            FROM db_system.devices 
            WHERE vendor = 1)
ORDER BY e.id DESC

如何在不重复子查询的情况下获得它:

            SELECT * 
            FROM db_system.devices 
            WHERE vendor = 1

我需要得到db_system.devices.branddb_system.devices.model加入最终结果,我尝试逐步修改它,我尝试使用临时表,我怀疑它应该是简单的,但我没有能够做到,当然非常感谢你。 ..

4

1 回答 1

3

这是你想要的吗?

SELECT  e.*, a.* 
FROM    db_events.events e 
        INNER JOIN 
        (
            SELECT Max(id) MaxId, device_id
            FROM db_events.events
            GROUP BY device_id 
        ) e2 on e.Id = e2.MaxId AND 
                e.device_id = e2.device_id
        INNER JOIN db_system.devices a
            ON e.device_id = a.device_id  AND 
                a.vendor = 1
ORDER   BY e.id DESC

条件a.vendor = 1也可以在WHERE子句中移动,结果仍然相同,因为您正在使用INNER JOIN

SELECT ....
FROM   .... JOIN ....
WHERE  a.vendor = 1
ORDER  BY ...
于 2013-02-19T13:50:10.227 回答