我正在为客户端编写一个简单的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'");
答案 0 :(得分: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);
答案 1 :(得分:-1)
SELECT url_id FROM
TABLE
WHERE company_id='$company'
AND last_clicked = ( SELECT MIN(last_clicked)
FROM TABLE WHERE company_id='$company' )