我的数据库中有两个表。一个是配置文件的列表(代码示例中的表b)。第二个是日志表(代码示例中的表a),其中包含更新配置文件的记录。
我想执行一个查询,为我提供网站上的每个个人资料。有些配置文件尚未更新,因此日志表中没有记录,我希望它们也显示为0时间戳。
以下代码将仅返回两个表中存在ids的行。
SELECT b.id, b.name, b.linkname, IFNULL(MAX(a.date),0) as lastupdate
FROM links a, list b
WHERE b.id=a.id
我怎样才能使它工作,所以我得到一个完整的配置文件列表和一个存在的最新时间戳,如果它不存在则为0时间戳?
提前致谢。 希望这不是微不足道的,我一直在寻找,但无法找到一个例子。
答案 0 :(得分:0)
使用LEFT JOIN
获取数据..使用GROUP BY
以避免重复数据..因为您在log table
中为单个配置文件提供了多个条目..
SELECT b.id, b.name, b.linkname, IFNULL(MAX(a.date),0) as lastupdate
FROM list b
LEFT JOIN links a ON (a.id=b.id)
GROUP BY b.id;