1

我正在为客户端编写一个简单的 URL 旋转器,他们希望 URL 根据之前显示的最旧的 URL 进行旋转。

我的专栏很简单:

url_id | company_id | url | last_clicked

我想获取company_id传入 的单行,并且 last_clicked 是与company_id.

url_id如果所有 last_clicked 值都为空,它还应该随机选择一个。

我认为这可以通过 a 来完成,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'");
4

2 回答 2

0

这将获取 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);
于 2012-08-30T20:29:12.083 回答
-1
SELECT url_id FROM 
TABLE
WHERE company_id='$company'
 AND last_clicked = ( SELECT MIN(last_clicked)
                      FROM TABLE WHERE company_id='$company' )
于 2012-08-30T19:51:43.367 回答