簡體   English   中英

在PHP中,如何要求mySQL數據庫檢索多個與某個值匹配的最新記錄?

[英]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);

請參閱: http//www.techonthenet.com/sql/having.php

不幸的是,從這四列中無法得知哪個記錄是最新的。

我建議通過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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM