[英]Find Max Value In Database Column With Where Clause
可以说我以这种方式设置了数据库表,
ID | Name | Area | Timestamp
---+-------+------+------------
1 | Hill | 1 | 1293243080
2 | Sam | 1 | 1293243084
3 | Joe | 2 | 1293243087
4 | Bob | 2 | 1293243089
5 | Matt | 3 | 1293243091
6 | Billy | 3 | 1293243095
然后,我希望返回时间戳最大且具有特定区域号的人的姓名。
但是,当我尝试返回名称Bob时,我只会得到Billy,因为他的时间戳记最大。
我怎样才能使php不仅选择具有最大时间戳的人,而且还要选择具有特定区域号的人?
到目前为止,这是我的代码-
(之所以循环,是因为我显示的是每个区域中时间戳最大的人的名字)
for ($t = 1; $t <= 3; $t++){
$result = mysql_query("SELECT * FROM forum_posts WHERE Area='$t' AND Timestamp=(select max(Timestamp) from forum_posts)");
while($row = mysql_fetch_array($result))
{
$post_name[$t]=$row['Name'];
}
}
print_r ($post_name);
你们建议我做什么?
$result = mysql_query("SELECT * FROM forum_posts WHERE Area='$t' AND Timestamp=(select max(Timestamp) from forum_posts where Area='$t')");
更好的选择是。
$result = mysql_query("SELECT * FROM forum_posts WHERE Area='$t' ORDER BY Timestamp DESC LIMIT 1");
用这个
$ result = mysql_query(“ SELECT * FROM forum_posts WHERE Area ='$ t'ORDER BY Timestamp DESC LIMIT 1”);
您需要在查询中使用GROUP BY
。
您需要一个OR条件。 该查询将是:
$result = mysql_query("SELECT * FROM forum_posts WHERE Area='$t' OR Timestamp=(select max(Timestamp) from forum_posts)");
SELECT * FROM forum_posts (
SELECT
RANK() OVER (ORDER BY timestamp ASC) AS ranking,
name
FROM person
WHERE area = 1
) AS foo
WHERE ranking = 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.