选择一列最小的行

时间:2012-08-30 19:48:45

标签: php mysql sql

我正在为客户端编写一个简单的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'");

2 个答案:

答案 0 :(得分:0)

这将获取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);

答案 1 :(得分:-1)

SELECT url_id FROM 
TABLE
WHERE company_id='$company'
 AND last_clicked = ( SELECT MIN(last_clicked)
                      FROM TABLE WHERE company_id='$company' )
相关问题