SELECT S.CLIENT,S.IP_DOMAIN as IP, IFNULL(K.DATE, DATE '0000-00-00') AS RecentDate
FROM PLD_SERVERS AS S JOIN PLD_SEARCHES AS K ON S.ID = K.SERVER_ID
该查询将产生与 PLD_SEARCHES 中的条目一样多的结果。例如:
我在 PLD_SERVERS 中有 3 个条目,在 PLD_SEARCHES 中有 18 个条目。此查询的输出将为 18,但我需要它为 3(作为 PLD_SERVERS 条目的数量),并将最近日期作为 PLD_SEARCHES 的联接字段。
最佳答案
怎么样:
SELECT S.CLIENT,S.IP_DOMAIN as IP
, IFNULL(
(
Select Max(K2.DATE)
From PLD_SEARCHES AS K1
Where S.ID = K1.SERVER_ID
), DATE, '0000-00-00') AS RecentDate
FROM PLD_SERVERS AS S
Where Exists(
Select 1
From PLD_SEARCHES AS K1
Where S.ID = K1.SERVER_ID
)
在这里,我使用 Exists 函数来确定要显示哪些行,然后使用第二个子查询来查找最后一个日期。
关于mysql 查询产生的结果比应有的多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2474186/