0

以下代码用于获取记录的查询。它使用选举人.ID 从第二个表中找到相应的voting_intention.elector。

$criteria = "FROM voting_intention,electors WHERE voting_intention.elector = electors.ID AND voting_intention.pledge IN ('C','P') AND electors.postal_vote = 1 AND electors.telephone > 0"

问题是一些选举人将在voting_intentions 表中拥有多个质押。

我需要它仅根据每个选民voting_intention.pledge的字段匹配最新的。votin_intention.date

实现它的最简单方法是什么。

其余代码:

function get_elector_phone($criteria){
    $the_elector = mysql_query("SELECT * $criteria ORDER BY electors.ID ASC"); while($row = mysql_fetch_array($the_elector)) { 
    echo $row['ID'].','; }  
}
4

2 回答 2

2

您可以使用带有该MAX()功能的子选择。将以下内容添加到您的WHERE子句中。

AND voting_intention.date = (select MAX(date) 
                         from voting_intention vote2 
                         where voting_intention.elector = vote2.elector)

这是结果的 SQLFiddle。

于 2012-06-28T17:47:27.710 回答
1

非常多,您只想查看符合代码中前两个条件的最新行。在这种情况下,您可能希望事先过滤掉voting_intention 表,只需要担心每个表的最新条目。有一个问题/答案显示如何在此处执行此操作。

尝试选择以下而不是voting_intention(从链接问题的答案中,替换了一些表和字段名称):

SELECT voting_intention.*
FROM voting_intention
INNER JOIN
(
SELECT elector, MAX(date) AS MaxDate
FROM voting_intention
GROUP BY elector
) groupedintention ON voting_intention.elector = groupedintention.elector 
AND voting_intention.date = groupedintention .MaxDate

问题 url:如何在 SQL 中通过另一列选择具有 MAX(列值)、DISTINCT 的行?

于 2012-06-28T17:48:34.493 回答