簡體   English   中英

選擇至少一列的行

[英]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 BYHAVING來完成,但是我似乎無法使查詢返回任何內容。

我有這個:

$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_idlast_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.

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