0

我的数据库中有两个表。一个是配置文件列表(代码示例中的表 b)。第二个是一个日志表(代码示例中的表 a),其中记录了配置文件的更新时间。

我想执行一个查询,为我提供网站上的每个个人资料。一些配置文件尚未更新,因此日志表中没有记录,我希望它们也以 0 时间戳显示。

以下代码将仅返回两个表中都存在 id 的行。

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 时间戳(如果它不存在)?

提前致谢。希望这不是微不足道的,我一直在搜索大量,但找不到一个例子。

4

1 回答 1

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;
于 2013-02-15T11:54:23.667 回答