MySQL从两个数据库表中获取最新条目

时间:2014-03-31 15:20:21

标签: mysql sql database

感谢阅读。

我有两张桌子。客户表和注释表。

用户可以根据他们选择的客户端制作单独的笔记。每个注释都是它自己的独特的数据库条目,绑定到clientID。

现在我正在尝试设计一个查询,它会向我提供最新的注释和所有客户信息。

编辑:我道歉,我知道我需要澄清这个陈述,因为它含糊不清。 我需要客户端表中每个客户端的最新备注

现在我可以得到我想要的所有信息,除了我得到的笔记是最旧的而不是最新的。所有笔记都有一个noteID,我试图用来获取最新的笔记。

这是我目前使用的查询。

SELECT c.clientID, count(c.clientID), c.account_name, c.created_date, c.cert_verified, n.noteID, n.note_date, n.note_body 
FROM clients c, notes n 
WHERE c.clientID = n.clientID AND (SELECT max(n.noteID) from notes n) 
GROUP BY c.clientID ASC

非常感谢任何想法。我找到了几个例子,但没有一个我们非常适用。

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以尝试以下方式:

SELECT c.clientID, count(c.clientID), c.account_name, c.created_date, c.cert_verified, n.noteID, n.note_date, n.note_body 
FROM clients c, notes n 
WHERE c.clientID = n.clientID AND
  n.noteID in (SELECT max(nm.noteID) from notes nm where nm.clientId = c.clientID) 
GROUP BY c.clientID ASC

干杯,

克里斯。

答案 1 :(得分:0)

尝试这样的事情:

SELECT c.clientID, count(c.clientID), c.account_name, c.created_date, c.cert_verified, n.noteID, n.note_date, n.note_body 
FROM clients c, notes n 
WHERE c.clientID = n.clientID 
   AND n.noteID = (SELECT max(n2.noteID) from notes n2) 
   AND n.note_date = (SELECT max(n2.note_date) FROM notes n2)
GROUP BY c.clientID ASC

您的查询未检查以确保noteID EQUALS 表中的最大noteID。此外,您可能在将子查询的别名命名为外部查询时遇到问题(在您的情况下,notes表在两个查询中都具有​​别名n)。