![](/img/trans.png)
[英]In PHP, how do I ask a mySQL database to retrieve the most recent record that matches a certain value?
[英]In PHP, how do I ask a mySQL database to retrieve multiple most recent records that match a certain value?
我有一個包含以下字段的表:
candy_name
candy_type
candy_amount
candy_vendor
一種candy_type可以具有多個candy_name,例如“ gummis”可能具有“ orange”,“西瓜”,“酸西瓜”等。
我正在做的是按供應商搜索此表,然后我想查看每個唯一candy_type的最新條目(忽略candy_name)。 也就是說,每個唯一的candy_type最近添加的行。
因此,我找到了如何在該表中查找所有唯一的candy_types的部分:
$sql = "SELECT DISTINCT candy_type FROM candy_table
WHERE candy_vendor LIKE '%$user_searchbox_input%'
ORDER BY candy_vendor ASC";
$result=mysql_query($sql);
現在,我需要找出如何為每個唯一的candy_type檢索MOST RECENT記錄。
就像“ gummi”的candy_type一樣,如果與該類型匹配的最后一條記錄是“ orange”,那就是我要查看的記錄,而不是其他記錄。
對於“ chocolate”的candy_type,如果最后匹配的記錄是“牛奶”,我不在乎其他記錄,但是我想檢索與該candy_type匹配的最新記錄。
我怎么做?
如果需要最新的信息,請使用having
子句與group by
組合,因為group by已經選擇了不同的列,因此可以刪除distinct
子句。
$user_searchbox_input = mysql_real_escape_string($user_searchbox_input);
$sql = "SELECT candy_type FROM candy_table
WHERE candy_vendor LIKE '%$user_searchbox_input%'
GROUP BY candy_vendor
HAVING timeadded = MAX(timeadded)
ORDER BY candy_vendor ASC";
$result=mysql_query($sql);
不幸的是,從這四列中無法得知哪個記錄是最新的。
我建議通過ALTER TABLE命令添加date_time列。 如果需要語法幫助,可以參考http://dev.mysql.com/doc/refman/5.1/en/alter-table.html 。
這不會對您當前的查詢有所幫助,但對以后的任何查詢都會有所幫助。
按create_date(ORDER BY)或您創建的時間戳記對數據排序,然后執行SELECT * FROM tbl LIMIT 1; #檢索第一行
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.