以下代码用于查询以获取记录。它使用electors.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'].','; }
}
答案 0 :(得分:2)
您可以使用MAX()
功能的子选择。将以下内容添加到WHERE
子句中。
AND voting_intention.date = (select MAX(date)
from voting_intention vote2
where voting_intention.elector = vote2.elector)
答案 1 :(得分:1)
所以,你只想在你的代码中查看符合前两个条件的最新行。在这种情况下,您可能希望事先过滤出voting_intention表,只需要担心每个表的最新条目。有一个问题/答案显示了如何做到here。
尝试选择以下而不是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
问题网址:How can I SELECT rows with MAX(Column value), DISTINCT by another column in SQL?