[英]Select a row where one column is min
我正在為客戶端編寫一個簡單的URL旋轉器,他們希望URL根據先前顯示的最舊的URL旋轉。
我的專欄非常簡單:
url_id | company_id | url | last_clicked
我想獲取一行傳入了company_id
行,並且last_clicked是與company_id
匹配的所有記錄中的最小值。
如果所有last_clicked值為空,則還應該選擇一個隨機的url_id
。
我認為這可以通過GROUP BY
和HAVING
來完成,但是我似乎無法使查詢返回任何內容。
我有這個:
$last = $this->db->fetchOne ("SELECT url_id FROM
{$this->prefix}urls GROUP BY company_id HAVING MIN(last_clicked)
WHERE company_id='$company'");
這將獲取last_clicked最小的行;如果它們均為NULL,則將隨機獲取:
SELECT url_id FROM urls
WHERE company_id = $company
ORDER BY last_clicked, RANDOM() LIMIT 1;
基於company_id
和last_clicked
的索引將極大地幫助您:
CREATE INDEX urls_ndx ON urls(company_id, last_clicked);
SELECT url_id FROM
TABLE
WHERE company_id='$company'
AND last_clicked = ( SELECT MIN(last_clicked)
FROM TABLE WHERE company_id='$company' )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.