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的连接字段。
答案 0 :(得分:1)
如下:
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函数来确定要显示的行,然后使用第二个子查询来查找最后一个日期。
答案 1 :(得分:0)
尝试使用左连接:
SELECT S.CLIENT,S.IP_DOMAIN as IP, IFNULL(K.DATE, DATE '0000-00-00') AS RecentDate
FROM PLD_SERVERS AS S
LEFT JOIN PLD_SEARCHES AS K ON S.ID = K.SERVER
问题可能源于此情况下的JOIN类型不正确。检查不同类型的联接: