如何检索此数据库中重复项的最新数据?

时间:2014-06-25 13:08:11

标签: sql join odbc filemaker

我正在使用设计非常完善的数据库,该数据库在大多数表格中都不包含主键。 出于这个原因,我需要调整一些东西来从数据库中检索我想要的信息。

我有第一个名为Customer的表,它包含一个名为customer_id的唯一标识符。它还包含Account_ID。它包含更多数据 我现在不需要。

我使用被叫联系人的第二个表也包含Account_ID,虽然它不是唯一的,但它是我可用于链接的唯一数据 与另一张桌子。为了帮助它不是唯一的事实(由于某种原因,添加了具有相同Account_ID值的新行而不是修改一个。) 我想检索插入数据库中的最新数据,其中Account_ID上有重复数据。幸运的是,有 此表中的Time_stamp值。我想我可以利用这个优势。

我应该补充说这是一个文件制作者数据库,所以当我尝试了一些我已经在这里找到的东西时,它似乎总是起作用,我假设是因为这个原因。

这是我到目前为止所做的:

$sql = "SELECT table1.Customer, table1.Account_ID, table2.Account_ID, table2.Phone"
           . "FROM Customer AS table1"
                . "JOIN Contact AS table2 ON table1.Account_id = table2.Account_id";

此查询有效,但不排除重复项或在联系人表中查找最新的Account_ID条目。

2 个答案:

答案 0 :(得分:0)

使用此查询删除查询中的重复项:

"SELECT distinct table1.Customer, table1.Account_ID, table2.Account_ID, table2.Phone,max(table2.Account_ID)"
           . "FROM Customer AS table1"
                . "JOIN Contact AS table2 ON table1.Account_id = table2.Account_id"

答案 1 :(得分:0)

你的查询没问题。我刚添加了一个where子句来过滤具有最新时间戳的那个子句。它应该在sql server上工作,不知道filemaker。祝你好运:)

SELECT Customer.customer_id, Customer.Account_ID, Contact.Account_ID, Contact.Time_stamp
FROM Customer
INNER JOIN Contact ON Customer.Account_ID = Contact.Account_ID
WHERE Contact.Time_stamp = (SELECT MAX(C.Time_stamp) FROM Contact C WHERE C.Account_ID = Contact.Account_ID);

test the query here